Pau*_*ite 9 javascript java regex
在Java正则表达式中,您可以&&
在字符类中使用交集运算符来简洁地定义它们,例如
[a-z&&[def]] // d, e, or f
[a-z&&[^bc]] // a through z, except for b and c
Run Code Online (Sandbox Code Playgroud)
JavaScript中是否有等价物?
Bar*_*ers 12
JavaScript中是否有等价物?
简单回答:不,没有.它是特定的Java语法.
请参阅:Jan Goyvaerts和Steven Levithan撰写的正则表达手册.这是对相关部分的偷看.
可能不用说了,但是下面的JavaScript代码:
if(s.match(/^[a-z]$/) && s.match(/[^bc]/)) { ... }
Run Code Online (Sandbox Code Playgroud)
会像Java代码一样:
if(s.matches("[a-z&&[^bc]]")) { ... }
Run Code Online (Sandbox Code Playgroud)
正如其他人所说,没有等效的,但您可以达到&&
使用前瞻的效果。变换是:
[classA&&classB]
Run Code Online (Sandbox Code Playgroud)
变成:
(?=classA)classB
Run Code Online (Sandbox Code Playgroud)
例如,在 Java 中:
[a-z&&[^bc]]
Run Code Online (Sandbox Code Playgroud)
具有与此相同的行为:
(?=[a-z])[^bc]
Run Code Online (Sandbox Code Playgroud)
JavaScript 完全支持它。我不知道这两种形式的相对性能(在支持这两种形式的 Java 和 Ruby 等引擎中)。
由于&&
运算符是可交换的,因此您始终可以使用任一侧作为(正或负)前瞻部分。
类与否定类的交集也可以通过否定前瞻来实现。所以上面的例子也可以改写为:
(?![bc])[a-z]
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1528 次 |
最近记录: |