JavaScript正则表达式:`/x.*y/`与`/x(?=.*y)/`
需要你的帮助来理解何时使用什么。当与字符串JavaScript正则表达式:`/x.*y/`与`/x(?=.*y)/`,javascript,regex,Javascript,Regex,需要你的帮助来理解何时使用什么。当与字符串“sxcvgyb”上的方法test()一起使用时,/x.*y/和/x.*y/都给出了相同的结果(true),在使用测试方法时,y和/x(?=.*y)//code>对于您的目的是相同的 后者在匹配时使用并因此在技术上不捕获*y,但当您只需要知道匹配是否存在时,这没有可感知的效果 TL;DR:选择较短的正则表达式,/x.*y/ //使用'RegExp#test'时相同` console.log(/x.*y/.test('xylophone'))/=>tru
“sxcvgyb”
上的方法test()
一起使用时,/x.*y/
和/x.*y/
都给出了相同的结果(true
),在使用测试方法时,y和/x(?=.*y)//code>对于您的目的是相同的
后者在匹配时使用并因此在技术上不捕获*y
,但当您只需要知道匹配是否存在时,这没有可感知的效果
TL;DR:选择较短的正则表达式,/x.*y/
//使用'RegExp#test'时相同`
console.log(/x.*y/.test('xylophone'))/=>true
console.log(/x(?=.*y)/.test('xylophone'))/=>true
//使用'RegExp#exec'时不同`
console.log(/x.*y/.exec('xylophone'))//=>['xy']
当使用测试方法时,console.log(/x(?=.*y)/.exec('xylophone'))/=>['x']
/x.*y/
和/x(?=.*y)/
对于您的目的是相同的
后者在匹配时使用并因此在技术上不捕获*y
,但当您只需要知道匹配是否存在时,这没有可感知的效果
TL;DR:选择较短的正则表达式,/x.*y/
//使用'RegExp#test'时相同`
console.log(/x.*y/.test('xylophone'))/=>true
console.log(/x(?=.*y)/.test('xylophone'))/=>true
//使用'RegExp#exec'时不同`
console.log(/x.*y/.exec('xylophone'))//=>['xy']
console.log(/x(?=.*y)/.exec('xylophone'))/=>['x']
由于您使用的是withtest
方法,因此在这种情况下,结果将是相同的:
RegExp.prototype.test()
test()
方法执行对正则值之间匹配的搜索
表达式和指定的字符串。返回true或false
返回
如果正则表达式和
指定字符串否则,则为false
参考:
例如,请看这里:
const str=“sxcvgyb”
常量test1=RegExp(/x.*y/).test(str);
const result1=str.match(/x.*y/);
常量test2=RegExp(/x(?=.*y)/).test(str);
const result2=str.match(/x(?=.*y)/);
log('1st regex,是否存在匹配?',test1);
log('1st regex,匹配了什么?',result1);
log('2nd regex,是否存在匹配?',test2);
log('2nd regex,匹配了什么?',result2)代码>由于您使用的是withtest
方法,因此在这种情况下,结果将是相同的:
RegExp.prototype.test()
test()
表达式和指定的字符串。返回true或false
返回
如果正则表达式和
指定字符串否则,则为false
参考:
例如,请看这里:
const str=“sxcvgyb”
常量test1=RegExp(/x.*y/).test(str);
const result1=str.match(/x.*y/);
常量test2=RegExp(/x(?=.*y)/).test(str);
const result2=str.match(/x(?=.*y)/);
log('1st regex,是否存在匹配?',test1);
log('1st regex,匹配了什么?',result1);
log('2nd regex,是否存在匹配?',test2);
log('2nd regex,匹配了什么?',result2)代码>如果您只是检查布尔结果(匹配或不匹配),它们是等价的。vs;检查右边的解释面板。你应该接受答案。如果你只是检查布尔结果(匹配或不匹配),它们是等价的。vs;检查右边的解释面板。你应该接受答案。