正则表达式不允许双下划线,但它位于单词的末尾,后跟“ x”符号

时间:2018-10-24 14:49:41

标签: javascript regex

我需要一个正则表达式,禁止在单词中使用双下划线,但有一个例外:如果末尾加x-则字符串有效。符号顺序不起作用。 例如:

Foo_bar__x = VALID
Foo__bar_x = INVALID

一个字符串可以包含多个下划线和字母数字符号。这是几乎符合我要求的正则表达式,它使“ __”被禁止,但不能处理以__x结尾的情况:

^(?!.*__.*)\w+$

1 个答案:

答案 0 :(得分:2)

您可以将正则表达式用于负前瞻:

/^(?!.*__(?!x$))\w+$/

RegEx Demo

(?!.*__(?!x))是一个否定的超前行为,当我们得到__并在输入末尾加上x以外的任何字符时,就会断言失败。

嵌套负前瞻(?!x$)用于断言在获得成功匹配之前,双下划线后没有x