Javascript RegExp不';它不能产生预期的结果,但它在其他任何地方都能产生
我开始学习Node.js,并试图从PHP环境中学习它 我有以下正则表达式:Javascript RegExp不';它不能产生预期的结果,但它在其他任何地方都能产生,javascript,node.js,regex,Javascript,Node.js,Regex,我开始学习Node.js,并试图从PHP环境中学习它 我有以下正则表达式:/([A-Z]{2,})+/gim(两个或多个字母相邻)。 我有以下字符串:“这是我的测试样本,但它不工作。” 所以我把这个放到Node.js中(记住我是新手): 这是完整的文件 它返回的输出: [ 'That', 'That', index: 0, input: 'That\'s my testing sample but it doesn\'t work.' ] 根据我测试的几乎每个站点的输出: That
/([A-Z]{2,})+/gim
(两个或多个字母相邻)。我有以下字符串:
“这是我的测试样本,但它不工作。”
所以我把这个放到Node.js中(记住我是新手):
这是完整的文件
它返回的输出:
[ 'That',
'That',
index: 0,
input: 'That\'s my testing sample but it doesn\'t work.' ]
根据我测试的几乎每个站点的输出:
That
my
testing
sample
but
it
doesn
work
如何在排序数组中获得每个单独的结果
注意:
match()
和test()
不是一个函数。要使用g
标志获得多个结果,请多次调用.exec()
,如下所示:
let regex=/([A-Z]{2,})+/gim;
let str=“这是我的测试样本,但不起作用。”;
让结果;
while((results=regex.exec(str))!==null){
console.log(结果[0]);
}
您不需要将正则表达式文字包装到正则表达式中constructor@JonasW. 在这一点上,我放弃了,不管它是在构造函数中还是在lose中,它仍然会产生相同的结果。您必须多次调用.exec()
,才能获得所有结果。每次调用index
属性以获得下一组结果时,它都会推进该属性。这里的示例:您是否意识到match
和test
是字符串的一部分,而不是正则表达式的一部分@jfriend00这很奇怪,但它也是解决方案。谢谢。@J.Doe-我使用.match()
添加了另一个选项,如果您不想查看捕获组,这个选项会更简单。
That
my
testing
sample
but
it
doesn
work