创建正则表达式,有如下两种方式:
- var re = /ar/;
- var re = new RegExp('ar');
上面的正则表达式是与给定字符串集匹配的表达式。定义正则表达式之后,我们可以尝试匹配并查看匹配的字符串。可以使用 exec 函数匹配字符串:
- re.exec("car"); // returns ["ar", index: 1, input: "car"]
- re.exec("cab"); // returns null
有一些特殊的字符类允许我们编写复杂的正则表达式。RegEx 中有许多类型的元素,其中一些如下:
- 字符正则:w-字母数字, d- 数字, D- 没有数字
- 字符类正则:[x-y] x-y区间, [^x] 没有x
- 数量正则:+ 至少一个、? 没或多个、* 多个
- 边界正则,^ 开始、$ 结尾
例子如下:
- /* Character class */
-
- var re1 = /[AEIOU]/;
- re1.exec("Oval"); // returns ["O", index: 0, input: "Oval"]
- re1.exec("2456"); // null
- var re2 = /[1-9]/;
- re2.exec('mp4'); // returns ["4", index: 2, input: "mp4"]
-
- /* Characters */
-
- var re4 = /dDw/;
- re4.exec('1232W2sdf'); // returns ["2W2", index: 3, input: "1232W2sdf"]
- re4.exec('W3q'); // returns null
-
- /* Boundaries */
-
- var re5 = /^dDw/;
- re5.exec('2W34'); // returns ["2W3", index: 0, input: "2W34"]
- re5.exec('W34567'); // returns null
- var re6 = /^[0-9]{5}-[0-9]{5}-[0-9]{5}$/;
- re6.exec('23451-45242-99078'); // returns ["23451-45242-99078", index: 0, input: "23451-45242-99078"]
- re6.exec('23451-abcd-efgh-ijkl'); // returns null
-
- /* Quantifiers */
-
- var re7 = /d+D+$/;
- re7.exec('2abcd'); // returns ["2abcd", index: 0, input: "2abcd"]
- re7.exec('23'); // returns null
- re7.exec('2abcd3'); // returns null
- var re8 = /<([w]+).*>(.*?)</1>/;
- re8.exec('<p>Hello JS developer</p>'); //returns ["<p>Hello JS developer</p>", "p", "Hello JS developer", index: 0, input: "<p>Hello JS developer</p>"]
除了 exec 之外,还有其他函数,即 match、search 和 replace,可以使用正则表达式在另一个字符串中查找字符串,但是这些函数在字符串本身上使用。
- "2345-678r9".match(/[a-z A-Z]/); // returns ["r", index: 8, input: "2345-678r9"]
- "2345-678r9".replace(/[a-z A-Z]/, ""); // returns 2345-6789
Regex 是一个重要的主题,开发人员应该理解它,以便轻松解决复杂的问题。
9)理解 map、reduce 和 filter
函数式编程是当今的一个热门讨论话题。许多编程语言都在新版本中包含了函数概念,比如 lambdas(例如:Java >7)。在 JavaScrip t中,函数式编程结构的支持已经存在很长时间了。我们需要深入学习三个主要函数。数学函数接受一些输入和返回输出。纯函数都是给定的输入返回相同的输出。我们现在讨论的函数也满足纯度。
map (编辑:晋中站长网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|