Javascript regexp - 仅当第一个字符不是星号时

Spl*_*ynx 12 javascript regex negate

我正在使用javascript验证器,它将让我构建基于regexp的自定义验证

从他们的网站:regexp=^[A-Za-z]{1,20}$允许最多20个字母字符.

如果输入字段中输入的数据超出此范围,则会返回错误.

我需要的是如果值的asterix作为第一个字符,将触发输入字段错误的字符串.

我可以使它触发相反的操作(如果第一个字符不是星号则出错):

regexp=[\u002A]
Run Code Online (Sandbox Code Playgroud)

Heeeeelp请:-D

Cam*_*ron 30

怎么样:

^[^\*]
Run Code Online (Sandbox Code Playgroud)

哪个匹配任何以星号开头的输入; 从示例正则表达式判断,任何与正则表达式不匹配的输入都将导致验证错误,因此对于双重否定,您应该得到您想要的行为:-)

我的正则表达式的解释:

  • 第一个^意思是"在字符串的开头"
  • [... ]结构是一个字符类,不匹配的括号中的那些中的单个字符
  • ^在字符类的开头的意思是"否定字符类",即匹配的任何字符列出的一个
  • 所述\*指文字*; *在正则表达式中有特殊含义,所以我用反斜杠转义它.正如Rob在评论中指出的那样,在字符类中逃避(大多数)特殊字符并不是绝对必要的

  • 你不需要逃避*里面的[] (2认同)
  • @Splynx:没问题;-)顺便说一句,如果您也需要它传递一个有效的空输入,您可以使用:`^(?:[^\*]|$)` (2认同)