tes*_*dtv 21 javascript java regex matcher
我知道regEx在各种语言中很常见......但是我在编写Java语法时遇到了麻烦.我有一个用JS编码的正则表达式;
if((/[a-zA-Z]/).test(str) && (/[0-9]|[\x21-\x2F|\x3A-\x40|\x5B-\x60|\x7B-\x7E]/).test(str))
return true;
Run Code Online (Sandbox Code Playgroud)
我如何在Java中编写相同的内容?
我已经进口了
import java.util.regex.Matcher;
import java.util.regex.Pattern;
Run Code Online (Sandbox Code Playgroud)
只是添加,从我尝试它是说\ x是一个无效的转义字符..
Ste*_*n C 40
将前导和尾随'/'字符更改为'"',然后将每个字符替换'\'为"\\".
与Javascript,Perl和其他脚本语言不同,Java没有针对正则表达式的特殊语法.相反,它们(通常)使用Java字符串文字表达.但是'\'Java字符串文字中的转义字符,因此'\'原始正则表达式中的每一个都必须使用第二个转义'\'.(如果你在正则表达式中有一个字面反斜杠字符,你最终会"\\\\"得到Java字符串文字!!)
这对Java新手来说有点混乱/令人生畏......但它完全符合逻辑.请记住,您正在使用Java字符串文字来表达正则表达式.
但正如@antak所指出的,Java和Javascript中的正则表达式语言之间存在各种差异.因此,如果您使用Javascript正则表达式并将其音译为Java,则可能无法正常工作.
以下是一些总结差异的参考资料.
Evg*_*nov 19
您可以使用在线正则表达式评估器(如https://regex101.com)进行转换。
ECMAScript (JavaScript) FLAVORTOOLS -> Code Generator (LANGUAGE - Java)即使它不是硬核程序员的方式,它也明显不太容易出错。特别是如果您只需要转换一两个表达式。
| 归档时间: |
|
| 查看次数: |
24528 次 |
| 最近记录: |