总结Javascript与其他语言的规律性之间的区别
前言最近,人们发现Javascript在某些地方的规律性与其他语言或工具有所不同。它与其他语言有很大的不同。虽然你几乎不会写,也很难使用下面这些正则化规则,但我们知道,毕竟它是好的。
本文中的代码示例都是在Javascript环境兼容ES5的实现。也就是说,对IE9以前的版本的性能,关于伦敦的版本,等完全不同于我所要说的话。
1。空字符类
不包含任何字符字符类{被称为null类(空char类),我相信您还没有听到它的调用,因为在其他语言中,措辞是非法的,所有文档和教程都不会讲非法语法。这里我演示了其他的语言或工具:
$ echo grep |{ }
一个无与伦比的{ { ^或
SED的回声|美元/ {}
SED:E表达# 1,特征4:联合国终止地址的正则表达式
$ echo awk | ' / /{ }
awk:cmd。行:1
awk:cmd。线:1:^终结的正则表达式
awk:cmd。行:1:错误:不匹配的,或是
$ echo Perl呢 / / | { }
无与伦比的{在正则表达式的特点在这里;M / {在E线在这里 / 1。
$ echo红宝石呢 / / | { }
e:1:空char类:
$python -c'import re; re.match ({}
Traceback(最近一次电话):
文件行,1,在
在匹配中,文件行,137
返回_compile(图案、标志)匹配(字符串)。
文件E: 重新Python库。Py线,244,在_compile
提高错误,无效的表达#
sre_constants.error:正则表达式意外结束
在Javascript中,空字符类是合法的常规组件,但其效果是从不匹配。
无论如何匹配,即空字符类,从不,
无效的
无论如何(匹配(g!))空气负阳性,从来没有环顾四周。
无效的
很明显,这种东西在Javascript中不起作用。
2。负空字符类
否定字符类{ }不包含任何称为否定空字符类(负空char类)或空负(空负值char类字符类)的字符,可以是,因为这个术语是我自己的
{ ^ $ echo grep | }
一个无与伦比的{ { ^或
SED的回声|美元/ { ^ }
SED:E表达# 1,特征5:联合国终止地址的正则表达式
$ echo awk | ' / /^ } {
awk:cmd。行:1
awk:cmd。线:1:^终结的正则表达式
awk:cmd。行:1:错误:不匹配的,或是
$ echo Perl呢 / { ^ } |
无与伦比的{在正则表达式的特点在这里;M / {在E线1。对…
$ echo红宝石呢 / { ^ } |
e:1:空char类:
Python c'import美元重新;re.match({ }^
Traceback(最近一次电话):
文件行,1,在
在匹配中,文件行,137
返回_compile(图案、标志)匹配(字符串)。
文件E: 重新Python库。Py线,244,在_compile
提高错误,无效的表达#
sre_constants.error:正则表达式意外结束
美元
在Javascript中,空字符类的否定是法律的常规组成部分。它的效果正好与空字符类的效果正好相反。它可以匹配任何字符,包括换行字符
无论如何匹配,即拒绝null字符,匹配任意字符。
{ w
无论如何匹配,即匹配字符类,匹配任意字符。
{ w
需要注意的是,它不能被称为总是匹配规则。
测试()没有后面的字符,并且匹配失败。
假
要理解真正的永久匹配规则
3、{ }和{ } }
这个对话比较简单,就是在正则表达式Perl和其他字符类中的Linux命令中,如果包含一个跟随左括号右括号{ },右括号将被视为一个普通字符,也就是说,只有}
$ Perl e'print}= ~ / /{ } }
一
$ JS e'print( / { } } /。试验()))
假
$ Perl e'printX= ~ / { ^ } }
一
$ JS e'print( / / ^ } { }。试验(X))
假
4美元锚
一些初学者认为$匹配换行符当在 Z,而在Javascript中,多行模式相当于$ Z(只是位置在比赛,最终无论最后是换行符)。露比是个特例,因为它是默认模式,多行模式将比赛中课前每个换行符的位置将被包括在线可能结束。于胜在书中也用了常规指南来讨论这些问题。
$ Perl e'print 什么全局替换替换字符
无论替换换行符 / /在更换前的位置
替换换行符 / /后面更换位置
JS e'print美元(什么替换(,替换)替换全局替换。
无论什么
替换换行符 / /后面更换位置
5。点阵字符
Javascript中的正则表达式、圆点字符可以匹配四行终结符( - r),- u2028 -换行符分隔符 u2029段分隔符)的所有特性外,在其他的共同语言,只能排除换行符。
6。向前参考
我们都知道有规律的反向引用(反向引用),是使用一个反斜杠+数字形式是指一系列捕获的数据包已被匹配到前面,目的是比赛或作为替代结果(为$)。但有一个特殊的情况下,如果你还没有开始抓包引用(左括号是有限的),使用反向引用,如何将如定期/( 2(一)){ 2 } /(一)是第二捕获组,但其参考匹配结果使用 2在它的左侧,我们知道,是有规律的从左到右,这是本节的标题(向前向前引用参考)的起源,它不是一个严格的概念。现在你想,这句话将返回下面的Javascript代码:
js(2(a)){ 2
在回答这个问题之前,先看看其他语言的表现。类似地,在其他语言中,这基本上是无效的。
$ echo AAA grep | '( 2(一)){ 2 }
一个无效的回指
$ echo AAA R(SED | / 2(一)){ 2 }
SED:E表达# 1,特征12:非法引用
$ echo AAA awk(| / 2(一)){ 2 }
$ echo AAA Perl ne'print(| / 2(一)){ 2 }
$ echo AAA红宝石氖| _美元( 2 = 'print / { 2 } (一))
Python c'import美元重新;打印re.match((( 2(一)){ 2 }
没有
在awk中没有错误,因为awk不支持反向引用,其中 2解释为ASCII码为2的字符。在Perl中,Ruby Python在报上没有错,我不知道为什么这个设计,应该是Perl,但结果是一样的,就是这种情况下无法比拟的成功。
在Javascript中,你不仅不能犯错误,而且能与成功相匹配,看起来与你刚才所想的答案不同。
js(2(a)){ 2
{ aa
我说:结果是什么,以防止您忘记执行方法的返回。第一个元素是字符串匹配正则表达式完成,{$
进入第一个捕获组的第一个(最左边的左括号),一个有效的匹配是 2,但第二包捕获(一)不在方向盘上,这样值的正则表达式。2美元或未定义,所以 2,目标字符串的第一个留下一个空荡荡的字符串,或位置在比赛被分配价值结束
在Firefox(3.6)的早期版本中,量词的圆匹配不会清空所捕获的包的值。也就是说,当第二轮比赛时,2将与第二轮比赛相匹配。
js(2(a)){ 2
{AAA
另外,捕获包的结束取决于右括号是否关闭,例如(1){ 3 } /。虽然使用了 1,但第一个捕获包已经开始匹配,但还没有结束,这也是向前引用,所以1匹配仍然是空的。
js(1){ 3
{AAA
再举一个例子:
(JS > /:(f)(O)(O)|(b)(a)(R))* /。exec(foobar)
{foobar
*数字是量词,第一轮比赛后,1美元是f
当第二轮比赛开始时,所有被捕获的值被重置为未定义。
在第二轮匹配之后,1美元未定义,2美元未定义,3未定义,4美元为B。
它被指定为foobar
总结
以上是总结Javascript的正则语言和其他语言的所有内容,希望本文的内容能帮助您学习和工作。