Javascript 不包含连续字符的正则表达式

Javascript 不包含连续字符的正则表达式,javascript,regex,Javascript,Regex,我想不出javascript正则表达式可以满足所有这些要求: 字符串只能包含下划线和字母数字字符。 它必须以字母开头,不包括空格,不以下划线结尾,并且不包含两个连续的下划线。 这就是我所说的,但“不包含连续下划线”部分是最难添加的 ^[a-zA-Z][a-zA-Z0-9_]+[a-zA-Z0-9]$ 您可以使用多个lookahead(本例中为负数): 看。 分解如下: ^ # start of the line (?!.*__) # neg. lookahead,

我想不出javascript正则表达式可以满足所有这些要求:

字符串只能包含下划线和字母数字字符。 它必须以字母开头,不包括空格,不以下划线结尾,并且不包含两个连续的下划线。

这就是我所说的,但“不包含连续下划线”部分是最难添加的

^[a-zA-Z][a-zA-Z0-9_]+[a-zA-Z0-9]$

您可以使用多个lookahead(本例中为负数):

看。
分解如下:

^           # start of the line
(?!.*__)    # neg. lookahead, no two consecutive underscores (edit 5/31/20: removed extra Kleene star)
(?!.*_$)    # not an underscore right at the end
[A-Za-z]\w* # letter, followed by 0+ alphanumeric characters
$           # the end

作为
JavaScript
代码片段:

let strings=['somestring','u not_this_one','this one','not this_one','but this_one','this_one'u not','this_one'u yes']
变量re=/^(?。*。。*。(?!*。$)[A-Za-z]\w*$/;
forEach(函数(字符串){
console.log(重新测试(字符串));
});您也可以使用

^[a-zA-Z]([a-zA-Z0-9]|(_(?!_)))+[a-zA-Z0-9]$

与正则表达式相比,唯一的变化是将
[a-zA-Z0-9.]
更改为
[a-zA-Z0-9]|((?))
。我从字符集中删除了下划线,并允许它出现在备选字符集的第二部分,如果它后面没有另一个下划线的话

(?!\u)
是负向前看,意味着
\u
不能是下一个字符

  • ^
    将位置断言为行的起点
  • [a-z]
    匹配任何小写ASCII字母。下面的代码添加了
    i
    (不区分大小写)标志,因此这也与大写变量匹配
  • (?!\w*\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
  • (?:\w*[^\w)]?
    可以选择匹配以下内容
    • \w*
      匹配任意数量的单词字符
    • [^\W\u]
      匹配除
      \u
      之外的任何单词字符。解释:匹配任何不是单词字符,但不是
      \uuu
      的字符(因为它在否定集中)
  • $
    在行尾断言位置
设a=['somestring','u not'u this'u one','this one','not this'u','but'u this'u one','this'u one'u not','this'u one'u yes']
变量r=/^[a-z](?!\w*\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
a、 forEach(函数){
if(r.test(s))console.log(s)

});
请告诉我这不是密码格式要求。也许,您可以将其写成
/^[a-Z](?!..\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu。一个错误提示:“this_One__yes”不适用于
a
b
ab
,请参阅(意思是字符串必须至少有3个字符长,不知道这是否是要求)。
^[a-zA-Z]([a-zA-Z0-9]|(_(?!_)))+[a-zA-Z0-9]$
^[a-z](?!\w*__)(?:\w*[^\W_])?$