Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/377.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 正则表达式星号用法_Javascript_Regex - Fatal编程技术网

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
匹配零次或多次

要理解正则表达式,可以使用站点