当前位置: 首页 > 面试题库 >

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

堵茂勋
2023-03-14
问题内容

我知道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


 类似资料:
  • 问题内容: 我目前正在将Web应用程序代码从PHP移植到JS。 我对此正则表达式有疑问。从PHP 这样使用 如何将其转换为在JS上工作? 先感谢您 问题答案: 没什么特别的。PHP regex语法与JavaScript中的语法非常相似: 您可以从 MDN的 本手册中找到有关JavaScript 中正 则表达式的更多信息:https : //developer.mozilla.org/en- US/

  • 我试图将js代码转换为java版本,但对正则表达式有点困惑:在js中,我有一个类似于:testString的表达式。拆分(“/(\w*\d)/g”) 我可以在java中使用什么等效语言?我试着用匹配器得到同样的结果。find()和split函数,但结果不一样。

  • 问题内容: 您如何将该Perl正则表达式转换为Java? 编译时,对我而言它不匹配“ PattErn”,但失败 问题答案: 您如何将该Perl正则表达式转换为Java? 你不能 造成这种情况的原因很多。这里有一些: Java不像Perl那样支持正则表达式语言。它缺少字形支持(如和完整属性支持(如),缺少Unicode命名字符,没有分支重置运算符,在Java 7之前没有命名捕获组或逻辑转义,没有递归

  • 问题内容: 我明白了为什么使用正则表达式的字符串转换一样没有给出所需的输出到这反而给了。我可以用String.substring做一些事情,或者只是替换最后一个字符,但是我认为有一种更好的解决方案。 这是代码: 问题:正在寻找一种更整洁的方式来获得所需的输出? 问题答案: 看到这个问题,从番石榴 就您而言,类似:

  • 我理解为什么在使用regex将这样的字符串转换为时没有给出所需的输出,而后者给出的是。我本可以用string.substring做一些事情,或者只是替换最后一个字符,但我认为对于这样的场景有更好的解决方案。 代码如下: 问题:正在寻找一种更整洁的方法来获得所需的输出?

  • 使用管道分隔的文件。目前,我使用记事本查找和替换REGEX模式,它用第5和第6个之间的空字符串替换所有行。我正在尝试以编程方式执行此过程,但是。NET不支持。我尝试了一些向后查找实例,但似乎无法理解它。