我正在尝试编写一个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"
答案 0 :(得分:3)
根据您的要求,您可以提出:
^(?!.*\.{2})(?=.*[a-zA-Z0-9]$)[a-zA-Z0-9][-~.\w]*$
在multiline
模式下,请参阅a demo on regex101.com。
<强>解释强>
答案 1 :(得分:2)
JavaScript正则表达式中没有外观。幸运的是,无论如何你根本不需要它。取代
(?<=[^\W_])
只需
[^\W_]