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']
由于您使用的是with
test
方法,因此在这种情况下,结果将是相同的:

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)由于您使用的是with
test
方法,因此在这种情况下,结果将是相同的:

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;检查右边的解释面板。你应该接受答案。