将Javascript正则表达式转换为Java语法
我知道regEx在各种语言中都很常见…但是我在编写Java语法时遇到了麻烦。我有一个用JS编码的正则表达式;
if((/[a-zA-Z]/).test(str) && (/[0-9]|[\x21-\x2F|\x3A-\x40|\x5B-\x60|\x7B-\x7E]/).test(str)) return true;
如何用Java编写相同的代码?
我已经进口了
import java.util.regex.Matcher;import java.util.regex.Pattern;
只是要补充一点,根据我的尝试,它说\ x是无效的转义字符。
回答:
将开头和结尾'/'
字符更改为'"'
,然后将其替换'\'
为"\\"
。
与JavaScript,Perl和其他脚本语言不同,Java对正则表达式没有特殊的语法。相反,它们(通常)使用Java字符串文字表示。但是'\'
Java字符串文字中的转义字符是转义字符,因此'\'
原始正则表达式中的每个转义字符都必须使用2nd进行转义'\'
。(如果您在正则表达式中使用文字反斜杠字符,则最终会出现"\\\\"
在Java字符串文字中!)
对于Java新手来说,这有点令人困惑/令人生畏,但这是完全合乎逻辑的。请记住,您使用的是Java 字符串文字 来表达正则表达式。
但是,正如@antak所指出的,Java和JavaScript中的正则表达式语言之间存在各种差异。因此,如果您采用任意JavaScript正则表达式并将其音译为Java,则可能无法正常工作。
以下是一些总结差异的参考。
- https://en.wikipedia.org/wiki/Comparison_of_regular_expression_engines
- https://gist.github.com/CMCDragonkai/6c933f4a7d713ef712145c5eb94a1816
以上是 将Javascript正则表达式转换为Java语法 的全部内容, 来源链接: utcz.com/qa/428644.html