Javascript 正则表达式星号用法
据Javascript 正则表达式星号用法,javascript,regex,Javascript,Regex,据 x*:*与前面的项匹配x 0次或更多次。* 基本上,前面的字符应该是完全可选的。无论字符串是否存在,都将匹配该字符串。那么,为什么: 1. var text = "foobar"; var re = /q*/; var found = text.match(re); console.log(found); // prints '["", index: 0, input: "foobar"]' var re = /fz*/; console.log(found); // pri
x*:*与前面的项匹配x 0次或更多次。*
基本上,前面的字符应该是完全可选的。无论字符串是否存在,都将匹配该字符串。那么,为什么:
1.
var text = "foobar";
var re = /q*/;
var found = text.match(re);
console.log(found); // prints '["", index: 0, input: "foobar"]'
var re = /fz*/;
console.log(found); // prints '["f", index: 0, input: "foobar"]'
但是
两个表达式都不存在,因此应该匹配0次,并返回''''
或:
2.
var text = "foobar";
var re = /q*/;
var found = text.match(re);
console.log(found); // prints '["", index: 0, input: "foobar"]'
var re = /fz*/;
console.log(found); // prints '["f", index: 0, input: "foobar"]'
但是
这里发生了什么事?根据我的理解,'fzq'
不存在,所以应该匹配0次,并且应该返回'''',对吗?如果它以某种方式基于每个字符而不是整个字符串进行匹配,'fzq*'
应返回与'fz'
-'f'
匹配一次,其余匹配0次相同的结果。但很明显,事情并不是这样的
有人能解释一下这里到底发生了什么吗
x*:与前一项匹配x 0次或更多次
在*
匹配零次或多次之前,您误解了此语句
当您匹配q*
时,正则表达式将在输入字符串中搜索q
。由于foobar
中没有q
,它将返回一个空字符串
当您尝试匹配qz*
时,正则表达式将尝试在q
之后搜索任意数量的z
s。由于输入字符串中没有q
,它将返回null
要通过*
或任何其他量词匹配更多字符,需要使用括号将它们分组
(qz)*
也就是说,将字符串qz
匹配零次或多次
要理解正则表达式,可以使用站点
x*:与前一项匹配x 0次或更多次
在*
匹配零次或多次之前,您误解了此语句
当您匹配q*
时,正则表达式将在输入字符串中搜索q
。由于foobar
中没有q
,它将返回一个空字符串
当您尝试匹配qz*
时,正则表达式将尝试在q
之后搜索任意数量的z
s。由于输入字符串中没有q
,它将返回null
要通过*
或任何其他量词匹配更多字符,需要使用括号将它们分组
(qz)*
也就是说,将字符串qz
匹配零次或多次
要理解正则表达式,可以使用站点