regex - 如何编写正则表达式以仅匹配数字,字母和破折号?

标签 regex validation url slug

我需要一个仅接受的表达式:

  • 数字
  • 普通字母(无特殊字符)
  • -

  • 也不允许有空格。

    例:
    正则表达式应匹配:this-is-quite-alright
    它不应该匹配this -is/not,soålright

    最佳答案

    您可以使用:

    ^[A-Za-z0-9-]*$
    

    这匹配可能完全为大写/小写字母(ASCII A-Z),数字(ASCII 0-9)和破折号的字符串,可能为空。

    符合(as seen on rubular.com):
    this-is-quite-alright
    and-a-1-and-a-2-and-3-4-5
    
    yep---------this-is-also-okay
    

    并拒绝:
    this -is/not,soålright
    hello world
    

    说明:
  • ^$分别是字符串 anchor 的开头和结尾
  • 如果要在字符串中查找匹配项,则不需要 anchor
  • [...]是字符类

    字符类中的
  • a-zA-Z0-9定义范围
  • -作为类中的最后一个字符是文字​​破折号
  • *是零个或多个重复

  • regular-expressions.info
  • AnchorsCharacter ClassRepetition


  • 变异

    规范尚不清楚,但是如果-仅用于分隔“单词”,即没有双破折号,没有尾随的破折号,没有前面的破折号,则该模式会更复杂(仅略微!)。
      _"alpha"_    separating dash
     /         \  /
    ^[A-Za-z0-9]+(-[A-Za-z0-9]+)*$
     \__________/| \__________/|\
        "word"   |    "word"   | zero-or-more
                 \_____________/
                  group together
    

    这将匹配至少一个“单词”的字符串,其中单词由一个或多个“alpha”组成,其中“alpha”由字母和数字组成。可能会出现更多的“单词”,并且它们始终用短划线隔开。

    符合(as seen on rubular.com):
    this-is-quite-alright
    and-a-1-and-a-2-and-3-4-5
    

    并拒绝:
    --no-way
    no-way--
    no--way
    

    关于regex - 如何编写正则表达式以仅匹配数字,字母和破折号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3224419/

    相关文章:

    java - 正则表达式模式匹配器

    ios - 正则表达式从字符串中获取字符串

    java - Spring Controller 预处理@ModelAttribute请求参数

    javascript - 检查 django 表单有效性和 javascript

    validation - 文本框上带有 maxlength 和占位符的 IE10 验证错误

    php - 制作 SEO 敏感 URL(避免 id)Zend 框架

    xml - Golang : No response from get. http( 网址 )

    python - 用于捕获 HTML 源代码中花括号之间所有内容的正则表达式

    java - 在节点中查找关键字并获取 DOM 中的节点名称

    javascript - 无法使用 Internet Explorer 使用 javascript 方法 window.open() 打开编码的 URL。