如何编写正则表达式只匹配数字,字母和短划线?

时间:2010-07-11 19:52:52

标签: regex validation url slug

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

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

也不允许有空格。

实施例: 正则表达式应匹配:
this-is-quite-alright

不应该匹配 this -is/not,soålright

3 个答案:

答案 0 :(得分:14)

您可以使用:

^[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

说明:

  • ^$分别是字符串锚点的开头和结尾
    • 如果您正在寻找字符串中的匹配项,那么您不需要锚点
  • [...]是一个角色类
    • a-zA-Z0-9在字符类中定义范围
    • -作为班级中的最后一个字符是文字​​破折号
  • *为零或更多重复

regular-expressions.info


变异

规范不明确,但如果-仅用于分隔“单词”,即没有双短划线,没有尾随短划线,没有前面的短划线,那么模式更复杂(只是轻微! )

  _"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

答案 1 :(得分:0)

[A-z0-9-]+

但是你的问题令人困惑,因为它要求提供字母和数字,并且有一个包含短划线的例子。

答案 2 :(得分:0)

这是一个社区维基,试图编译有关此“URL / SEO打击”主题的相关问题的链接。邀请社区参与。

相关问题

相关标签