java - 将 Javascript 正则表达式转换为 Java 语法

标签 java javascript 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;

如何在 Java 中编写相同的内容?

我已经导入

import java.util.regex.Matcher;
import java.util.regex.Pattern;

补充一下,从我的尝试来看,\x 是一个无效的转义字符。

最佳答案

'/'开头和结尾的字符改为'"',然后将每个'\'替换为"\\".

与 JavaScript、Perl 和其他脚本语言不同,Java 没有用于正则表达式的特殊语法。相反,它们(通常)使用 Java 字符串文字表示。但是 '\' 是 Java 字符串文字中的转义字符,因此原始正则表达式中的每个 '\' 都必须使用第二个 '\' 进行转义。 (如果你在正则表达式中有一个文字反斜杠字符,你最终会在 Java 字符串文字中得到 "\\\\" !!)

这对于 Java 新手来说有点令人困惑/令人生畏,但这是完全合乎逻辑的。请记住,您使用的是 Java 字符串文字 来表达正则表达式。


然而,正如@antak 所说,Java 和 JavaScript 实现的正则表达式语言之间存在各种差异。因此,如果您采用任意 JavaScript 正则表达式并将其音译为 Java(如上所述),它可能无法正常工作。

这里有一些总结差异的引用资料。

关于java - 将 Javascript 正则表达式转换为 Java 语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8754444/

相关文章:

java - 订阅按钮点击而不内联实现

javascript - 是否可以从 require 优化器构建配置中排除一个模块,但可以单独优化该模块及其依赖项?

c# - 正则表达式问题 C#

c# - 正则表达式。分割为“()”和“?”

java - Android - 在继续方法之前等待 json 获取值

java - Java 中的字符串扫描器

javascript - 如何使用 JavaScript 动态删除换行符和文本输入?

ruby - 正则表达式错误 : too many multibyte code ranges are specified

java - 数据未使用 hibernate 插入,但没有给出错误?

javascript - insertBefore 代理元素 : parameter 2 is not of type 'Node'