Javascript相当于Java Regex

时间:2016-03-21 16:58:59

标签: javascript regex

我正在尝试编写一个javascript REGEX来验证字符串。

它应验证以下要求。

它应该只有大写和小写英文字母(a到z,A到Z)(ASCII:65到90,97到122)和/或数字0到9(ASCII:48到57)和字符 - _ 〜(ASCII:45,95,126)。前提是它们不是第一个或最后一个字符。它也可以有角色。 (点,句号,句号)(ASCII:46)前提是它不是第一个或最后一个字符,并且它也不连续出现两次或多次。

我有一个Java版本的REGEX如下。

  

^(= [^ \ W _])[\ W〜 - ] ++(\ [\ W *〜 - ] ++)* +(小于?= [^ \ W _])$

尝试转换它失败并与Javascript一起使用。以下是我失败的尝试。

  

^(= [^ \ W _])[\ W〜 - ] +([\ W〜 - ]。+)(。 [\ W])的 $

在以下两项测试中失败

abc..def 1

无效字符串的测试用例:

"a." "1." "a1." "aB78." "aB78..ab" "aB78,1" "aB78 abc" ".Abc12"

有效字符串的测试用例:

"a" "1" "a1" "a.1" "abc-def" "a1b2c~3" "012_345"

2 个答案:

答案 0 :(得分:3)

根据您的要求,您可以提出:

^(?!.*\.{2})(?=.*[a-zA-Z0-9]$)[a-zA-Z0-9][-~.\w]*$

multiline模式下,请参阅a demo on regex101.com

<强>解释

  • ^ 确保它是该行的开头
  • (?!。*。{2,}} 负向前瞻 - 连续两个点
  • (?=。* [a-zA-Z0-9] $)最后一个字符必须是其中之一
  • [a-zA-Z0-9] 第一个字符必须是其中之一
  • [ - 〜。\ w] * 之后的任何事情(零次或多次)
  • $ 确保字符串在此处结束

答案 1 :(得分:2)

JavaScript正则表达式中没有外观。幸运的是,无论如何你根本不需要它。取代

(?<=[^\W_])

只需

[^\W_]