Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.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,我正试图使用Javascript正则表达式以这种方式选择一些东西:!某物:某物感叹号、冒号和分号必须在那里,但其他部分可以是任何值。我试图这样做: "!test: value; random text here !another: valueagain;".match(/!(.*):(.*);/g); 这将返回原始字符串,!测试:数值;随机文本在这里!另一个:再一次。是我做的不对,还是正则表达式不正确 正如devnull所建议的,使用非贪婪量词 "!test: value; random te

我正试图使用Javascript正则表达式以这种方式选择一些东西:
!某物:某物感叹号、冒号和分号必须在那里,但其他部分可以是任何值。我试图这样做:

"!test: value; random text here !another: valueagain;".match(/!(.*):(.*);/g);

这将返回原始字符串,
!测试:数值;随机文本在这里!另一个:再一次。是我做的不对,还是正则表达式不正确

正如devnull所建议的,使用非贪婪量词

"!test: value; random text here !another: valueagain;".match(/!(.*?):(.*?);/g);
输出:

 [ '!test: value;', '!another: valueagain;' ]
一般来说,像
*
这样的正则表达式量词是贪婪的,因为它们会尝试匹配尽可能大的表达式


非贪婪版本的
*?
将只匹配它们需要匹配的数量。

正如devnull所建议的,使用非贪婪量词

"!test: value; random text here !another: valueagain;".match(/!(.*?):(.*?);/g);
输出:

 [ '!test: value;', '!another: valueagain;' ]
一般来说,像
*
这样的正则表达式量词是贪婪的,因为它们会尝试匹配尽可能大的表达式


非贪婪版本的
*?
将只匹配它们需要匹配的数量。

正如devnull所建议的,使用非贪婪量词

"!test: value; random text here !another: valueagain;".match(/!(.*?):(.*?);/g);
输出:

 [ '!test: value;', '!another: valueagain;' ]
一般来说,像
*
这样的正则表达式量词是贪婪的,因为它们会尝试匹配尽可能大的表达式


非贪婪版本的
*?
将只匹配它们需要匹配的数量。

正如devnull所建议的,使用非贪婪量词

"!test: value; random text here !another: valueagain;".match(/!(.*?):(.*?);/g);
输出:

 [ '!test: value;', '!another: valueagain;' ]
一般来说,像
*
这样的正则表达式量词是贪婪的,因为它们会尝试匹配尽可能大的表达式


非贪婪版本将只匹配所需的匹配量。

如果您使用贪婪匹配器,请像这样使用非贪婪匹配器

"!test: value; random text here !another: valueagain;".match(/!(.*?):(.*?);/g);
# [ '!test: value;', '!another: valueagain;' ]
(.*):
消耗所有内容,直到字符串中的最后一个
,因为它是贪婪的。这就是为什么您只能得到一个字符串。只需使用
,像这样
*?
使其不贪婪即可。这确保它匹配到第一个


您使用的是贪婪匹配器,请像这样使用非贪婪匹配器

"!test: value; random text here !another: valueagain;".match(/!(.*?):(.*?);/g);
# [ '!test: value;', '!another: valueagain;' ]
(.*):
消耗所有内容,直到字符串中的最后一个
,因为它是贪婪的。这就是为什么您只能得到一个字符串。只需使用
,像这样
*?
使其不贪婪即可。这确保它匹配到第一个


您使用的是贪婪匹配器,请像这样使用非贪婪匹配器

"!test: value; random text here !another: valueagain;".match(/!(.*?):(.*?);/g);
# [ '!test: value;', '!another: valueagain;' ]
(.*):
消耗所有内容,直到字符串中的最后一个
,因为它是贪婪的。这就是为什么您只能得到一个字符串。只需使用
,像这样
*?
使其不贪婪即可。这确保它匹配到第一个


您使用的是贪婪匹配器,请像这样使用非贪婪匹配器

"!test: value; random text here !another: valueagain;".match(/!(.*?):(.*?);/g);
# [ '!test: value;', '!another: valueagain;' ]
(.*):
消耗所有内容,直到字符串中的最后一个
,因为它是贪婪的。这就是为什么您只能得到一个字符串。只需使用
,像这样
*?
使其不贪婪即可。这确保它匹配到第一个

试试这个:

.match(/!(.*?):(.*?);/g);
添加的问号使
*
不贪婪,这意味着它匹配尽可能短的字符串。

尝试以下操作:

.match(/!(.*?):(.*?);/g);
添加的问号使
*
不贪婪,这意味着它匹配尽可能短的字符串。

尝试以下操作:

.match(/!(.*?):(.*?);/g);
添加的问号使
*
不贪婪,这意味着它匹配尽可能短的字符串。

尝试以下操作:

.match(/!(.*?):(.*?);/g);
添加的问号使
*
不贪婪,这意味着它匹配尽可能短的字符串。

尝试以下表达式:

"!test: value; random text here !another: valueagain;".match(/![^!]*:[^!]*;/g);
返回:

["!test: value;", "!another: valueagain;"]
尝试以下表达式:

"!test: value; random text here !another: valueagain;".match(/![^!]*:[^!]*;/g);
返回:

["!test: value;", "!another: valueagain;"]
尝试以下表达式:

"!test: value; random text here !another: valueagain;".match(/![^!]*:[^!]*;/g);
返回:

["!test: value;", "!another: valueagain;"]
尝试以下表达式:

"!test: value; random text here !another: valueagain;".match(/![^!]*:[^!]*;/g);
返回:

["!test: value;", "!another: valueagain;"]


整个字符串都与正则表达式匹配,所以你做得对,只是没有做你认为你在做的事情。你的预期输出是什么,你能分享吗?使用非贪婪量词。@Denim希望我能得到一个匹配数组。显然情况并非如此。它只返回一个带有原始字符串的数组。在这个例子中,什么是真正的返回数组?整个字符串与正则表达式匹配,所以你做得对,只是没有做你认为你在做的事情。你的预期输出是什么,你能分享一下吗?使用非贪婪量词。@Denim希望我能得到一系列匹配。显然情况并非如此。它只返回一个带有原始字符串的数组。在这个例子中,什么是真正的返回数组?整个字符串与正则表达式匹配,所以你做得对,只是没有做你认为你在做的事情。你的预期输出是什么,你能分享一下吗?使用非贪婪量词。@Denim希望我能得到一系列匹配。显然情况并非如此。它只返回一个带有原始字符串的数组。在这个例子中,什么是真正的返回数组?整个字符串与正则表达式匹配,所以你做得对,只是没有做你认为你在做的事情。你的预期输出是什么,你能分享一下吗?使用非贪婪量词。@Denim希望我能得到一系列匹配。显然情况并非如此。它只返回一个带有原始字符串的数组。在这个示例中,什么是真正的返回数组?谢谢,这似乎有效。我将把这个标记为答案。谢谢,这似乎有效。我将把这个标记为答案。谢谢,这似乎有效。我将把这个标记为答案。谢谢,这似乎有效。我将把这作为答案。