Javascript正则表达式 - 仅当第一个字符不是星号时

时间:2011-03-14 01:32:00

标签: javascript regex negate

我正在使用javascript验证器,它可以让我根据regexp构建自定义验证

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

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

如果值的asterix是第一个字符,我需要的是会触发输入字段错误的字符串。

我可以通过以下方式触发相反的操作(如果第一个字符不是星号,则会出错)

regexp=[\u002A]

Heeeeelp请:-D

3 个答案:

答案 0 :(得分:28)

怎么样:

^[^\*]

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

我的正则表达式的解释:

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

答案 1 :(得分:3)

^[^\*].+

怎么样?

细分:

  • ^ =字符串的开头。
  • [^\*] =任何一个字符都不是'*'。
  • .+ =任何其他角色至少一次。

答案 2 :(得分:0)

您可以在[

]之后使用^来反转字符类

regexp=[^\u002A]