正则表达式的字符串,不以数字开头,只允许使用字母数字

时间:2017-11-07 10:15:33

标签: javascript regex

我正在尝试为以下条件创建一个javascript正则表达式

  • 仅允许使用字母数字
  • 但也允许下划线(_)
  • 不允许以数字开头
  • 不允许以下划线开头

我创建了一个正则表达式^(?![0-9]|[_].*$).*,它适用于上面的最后两个条件。请建议如何添加and条件,使其适用于所有上述情况。

4 个答案:

答案 0 :(得分:7)

您可以使用以下正则表达式:

^[A-Za-z]\w*$

<强>详情

  • ^ - 字符串开头
  • [A-Za-z] - 任何ASCII字母
  • \w* - 零个或多个字母/数字/ _
  • $ - 字符串结束。

要允许空字符串匹配,请使用可选的非捕获组包装整个模式:

^(?:[A-Za-z]\w*)?$
 ^^^           ^^

答案 1 :(得分:5)

您可以使用此正则表达式:

^(?![0-9_])\w+$

RegEx Demo

当我们在开头有一个数字或(?![0-9_])时,

_会导致比赛失败。

答案 2 :(得分:2)

你可以使用正则表达式

^[a-zA-Z][A-Za-z0-9_]*$

请参阅regex101 demo

答案 3 :(得分:2)

你可能在考虑最后两个要求。如果它是字母数字(所以... a-z和0-9,对吧?)然后说“开头不允许数字或下划线”可能与“必须以字母开头”相同

^[a-z][a-z0-9_]*$

这是“必须从az开始”,然后是“必须跟随零个或多个字母,数字或下划线。字符类之外的^(例如[a-z]是一个字符类)”意思是“开始输入“。$表示输入结束。

如果按字面解释最后两个要求,可以写:

[^0-9_] 

这意味着“任何不是0-9且不是下划线的字符”,但它不一定限制用户输入除az之外的其他内容作为第一个字符,因此它们可能会输入#,它会传递..