需要您的帮助来了解何时使用什么。与字符串"sxcvgyb"
上的方法test()
一起使用时,/x.*y/
和/x(?=.*y)/
都给出了相同的结果(true
)。JavaScript正则表达式:`/ x。* y /`与`/ x(?=。* y)/`
0
A
回答
4
/x.*y/
和/x(?=.*y)/
对于您的目的,使用test
方法时是相同的。
后者使用a regular expression "look-ahead" group (?=...)
,因此在匹配时没有在技术上捕获.*y
,但是当您只需要知道匹配是否存在时,这没有可察觉的效果。
TL; DR:选择较短的正则表达式,/x.*y/
。
// Identical when using `RegExp#test`
console.log(/x.*y/ .test('xylophone')) //=> true
console.log(/x(?=.*y)/.test('xylophone')) //=> true
// Different when using `RegExp#exec`
console.log(/x.*y/ .exec('xylophone')) //=> [ 'xy' ]
console.log(/x(?=.*y)/.exec('xylophone')) //=> [ 'x' ]
1
由于使用的是具有test
方法,其结果将是相同的这种情况下:
RegExp.prototype.test()
test()
方法执行搜索常规 表达式和一个指定的字符串。返回true或false。返回
真如果存在匹配正则表达式之间以及 指定的字符串; 否则,错误。
例如,下面一起来看看:
const str = "sxcvgyb"
const test1 = RegExp(/x.*y/).test(str);
const result1 = str.match(/x.*y/);
const test2 = RegExp(/x(?=.*y)/).test(str);
const result2 = str.match(/x(?=.*y)/);
console.log('1st regex, is there a match? ', test1);
console.log('1st regex, what was matched? ', result1);
console.log('2nd regex, is there a match? ', test2);
console.log('2nd regex, what was matched? ', result2);
它们都匹配的东西,从而test
结果为真。但如果你看看实际匹配的是什么,你可以看到它们的差异。
如果您想了解更多关于它们的区别,@gyre的答案可以很好地解释“预见”组。
而且作为@Aaron建议,我还建议您使用在线测试仪,如regex101,看看你的正则表达式。理解它甚至更好地密切关注解释面板。
相关问题
- 1. 简单的正则表达式匹配x或x + y
- 2. 如何表达∀X∃Y r(X,Y),∃XŸY r(X,Y)?
- 3. JavaScript的正则表达式使用[X | Y | Z | XY | YZ]
- 4. AngularJS:`{{x +','+ y}}与`{{x}},{{y}}`
- 5. 匹配高达X正则表达式或y的正则表达式
- 6. SciTE正则表达式,x和y次之间的匹配表达式,例如\ w * {x,y}
- 7. X ||Ÿ与mapply(函数(X,Y)X || Y,X,Y)在[R]
- 8. 匹配正则表达式的有限闭合模式({x,y})
- 9. C/C++:“Grid [x + y * width]”与“Grid [x] [y]”
- 10. 正则表达式的{productName} - {}版本 - {X} {-OF- Y} .EXE在C#
- 11. (x,y)数的简单正则表达式
- 12. PHP正则表达式在{x,y}之间
- 13. 类型对(x,y)与(x/= y)
- 14. 为什么只有当我使用'x,y = y,x + y格式而不是'x = y; y = x + y'?
- 15. x/y越接近x/y的速度
- 16. 转换[X,Y]分开[X] [Y]列表
- 17. X-Y = X +¬y+ 1个问题
- 18. $('x> y'),$('y','x')和$('x y')之间有什么区别?
- 19. 逐元素乘法(X,Y,1)*(X,Y)
- 20. CSS线性渐变X到Y,则Y回X
- 21. 三个正数x,y,z的组合使x + y,x-y,y + z,y-z,x + z和x-z为完美正方形
- 22. 为什么在C++中x [y] == y [x]?
- 23. Math.IEEERemainder(x,y)是否等同于x%y?
- 24. `x +“”+ y`和`changeUs(x,y)`的意义`
- 25. POSIX扩展正则表达式 - 包含不X,但Y(STD ::正则表达式C++ 11)
- 26. 冷凝X,Y由Y
- 27. 绘制点x和y,轴y和x没有正确显示
- 28. 用X,Y,THETA
- 29. 如何解析表达式x --- y?这是法律表达吗?
- 30. 轮廓与Z(X,Y)
如果你只是检查一个布尔结果(匹配或不匹配),它们是等价的。 – melpomene
https://regex101.com/r/gisqMQ/1 vs https://regex101.com/r/nEEYZ6/1;检查右侧的说明面板。 – Aaron
你应该接受一个答案。 –