代码之家  ›  专栏  ›  技术社区  ›  Mark Allison

我的正则表达式在验证html输入中的模式时有什么问题?

  •  0
  • Mark Allison  · 技术社区  · 6 年前

    我在我的网站上有一个输入框,我想验证它是否介于4到30个字母数字或其中任何一个字符之间(点、下划线、连字符)。

    e、 g.这些是有效的:

    • 你好-
    • 再见23

    无效:

    • 喝倒采
    • 医院专科%
    • 这有一个空间

    在我的html中,我有一行:

    <input id="handletext" type="text" spellcheck="false" pattern="^[\w-\.]{4,30}$" maxlength="30" />
    

    模式属性值^[\w-.]{4,30}$不是有效的正则表达式 表达式:未捕获的语法错误:无效的正则表达式: /^[\w-.]{4,30}$/:无效的字符类。

    你知道我的模式有什么问题吗?

    2 回复  |  直到 6 年前
        1
  •  3
  •   Wiktor Stribiżew    6 年前

    必须转义连字符或将其放在字符类的开始/结束处,还需要从中删除转义反斜杠 . . 像 . u 修饰符(包括Chrome在内的大多数浏览器都使用该标志进行编译)。

    pattern="[\w.-]{4,30}"
    

    请注意,您不需要 ^ $ ,锚是 added automatically by the HTML5 engine .

    /^(?:[\w.-]{4,30})$/u _ , . - 查斯。

        2
  •  1
  •   cn007b Dheerendra Kulkarni    6 年前

    pattern="[\w\-\.]{4,30}" 对我有用,所以你也可以试试。
    这里的要点是你必须避开连字符。