考虑这两个脚本:
第一名: " ".match(/(\s)/)
和
第二: " ".match(/\s/)
结果
第一名: [" "," "]
第二: [" "]
我不明白这种行为.据我所知,捕获组/ paranthesis的目的是要在后面的regex中再次引用一段匹配.但显然并非全部.或者此特定于匹配和拆分方法的行为.
第一个脚本:第一个结果是整个模式,第二个是捕获组
第二个脚本:唯一的结果是整个模式.
捕获组不仅要在模式中稍后引用,它们也会在结果中显示.
当使用捕获组与分裂,捕获组返回带结果并且由于分离器应该切片串,这是正常的你获得["", " ", ""]作为结果与" "输入的字符串和/(\s)/作为图案.
写入时" ".match(/(\s)/)返回的结果是第一个匹配.此结果是唯一的,包含:
当你写" ".match(/(\s)/g)回来的结果是所有的匹配:
(在目前的情况下,你只有一个匹配)
这种行为很正常.匹配方法为两种不同的行为(有或没有/g).它是一种两种功能于一体.为了在没有g修饰符的PHP(或其他语言)中进行比较,您有两个不同的功能:preg_match和preg_match_all
捕获组有两个目的。它们可以稍后在正则表达式中引用(或在使用时在替换字符串中.replace()引用),但它们也由匹配函数返回,以便调用者可以使用它们。这就是.match()返回一个数组的原因:result[0]是整个正则表达式的匹配,result[n]是第一个捕获组的匹配n。
string.split将捕获组的匹配拼接到结果数组中。文档说:
如果分隔符是包含捕获括号的正则表达式,则每次匹配分隔符时,捕获括号的结果(包括任何未定义的结果)都会拼接到输出数组中。但是,并非所有浏览器都支持此功能。
| 归档时间: |
|
| 查看次数: |
1436 次 |
| 最近记录: |