Javascript 什么';这个正则表达式有什么问题:/(?:(?:^|\s)隐藏([^\s]+;)+;/?
这是我的正则表达式:Javascript 什么';这个正则表达式有什么问题:/(?:(?:^|\s)隐藏([^\s]+;)+;/?,javascript,regex,Javascript,Regex,这是我的正则表达式: /(?:(?:^|\s)hide_([^\s]+))+/ 例如,当我有以下字符串时: hide_test sgadsg hide_ asdg hide_some_more asdgasd 它应该匹配测试和更多的测试。目前,它返回hide\u test和test。有人知道这个正则表达式有什么问题吗?如果没有g标志,它只返回第一个匹配项 'hide_test sgadsg hide_ asdg hide_some_more asdgasd'.match( /(?:
/(?:(?:^|\s)hide_([^\s]+))+/
例如,当我有以下字符串时:
hide_test sgadsg hide_ asdg hide_some_more asdgasd
它应该匹配
测试
和更多的测试
。目前,它返回hide\u test
和test
。有人知道这个正则表达式有什么问题吗?如果没有g
标志,它只返回第一个匹配项
'hide_test sgadsg hide_ asdg hide_some_more asdgasd'.match(
/(?:(?:^|\s)hide_([^\s]+))+/
)
// => ["hide_test", "test"]
设置g
标志将为您提供所有匹配项(所有匹配的字符串):
要仅获取隐藏
之后的部分,需要对返回值进行后期处理
例如,使用带有附加替换的map
:
'hide_test sgadsg hide_ asdg hide_some_more asdgasd'.match(
/(?:(?:^|\s)hide_([^\s]+))+/g
).map(function(match) {
return match.replace(/^\s*hide_/, '');
})
顺便说一句,正则表达式可以简化为:
/(\bhide\S+)+/g
(忽略捕获)如果没有g
标志,它只返回第一个匹配
'hide_test sgadsg hide_ asdg hide_some_more asdgasd'.match(
/(?:(?:^|\s)hide_([^\s]+))+/
)
// => ["hide_test", "test"]
设置g
标志将为您提供所有匹配项(所有匹配的字符串):
要仅获取隐藏
之后的部分,需要对返回值进行后期处理
例如,使用带有附加替换的map
:
'hide_test sgadsg hide_ asdg hide_some_more asdgasd'.match(
/(?:(?:^|\s)hide_([^\s]+))+/g
).map(function(match) {
return match.replace(/^\s*hide_/, '');
})
顺便说一句,正则表达式可以简化为:
/(\bhide\S+)+/g
(忽略捕获)如果您希望输出测试和更多
,则需要使用.exec
和循环:
var regex = /(?:\bhide_(\S+))+/g;
var s = 'hide_test sgadsg hide_ asdg hide_some_more asdgasd';
var match, matches=[];
while ( (match=regex.exec(s)) !== null ) {
matches.push(match[1]);
}
alert(matches);
我还稍微修改了正则表达式以简化它。如果您想要输出测试和更多的,您需要使用.exec
和一个循环:
var regex = /(?:\bhide_(\S+))+/g;
var s = 'hide_test sgadsg hide_ asdg hide_some_more asdgasd';
var match, matches=[];
while ( (match=regex.exec(s)) !== null ) {
matches.push(match[1]);
}
alert(matches);
我还对您的正则表达式做了一些修改以简化它。谢谢!“我怎么能让它只返回隐藏之后的东西?”乔南,我在回答中补充了这一部分。看看,谢谢!“我怎么能让它只返回隐藏之后的东西?”乔南,我在回答中补充了这一部分。过来看。