我需要一个只接受的表达式:
也不允许有空格。
实施例:
正则表达式应匹配:
this-is-quite-alright
不应该匹配
this -is/not,soålright
答案 0 :(得分:14)
您可以使用:
^[A-Za-z0-9-]*$
这匹配字符串,可能是空的,完全由大写/小写字母(ASCII A-Z),数字(ASCII 0-9)和破折号组成。
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-z
,A-Z
,0-9
在字符类中定义范围-
作为班级中的最后一个字符是文字破折号*
为零或更多重复规范不明确,但如果-
仅用于分隔“单词”,即没有双短划线,没有尾随短划线,没有前面的短划线,那么模式更复杂(只是轻微! )
_"alpha"_ separating dash
/ \ /
^[A-Za-z0-9]+(-[A-Za-z0-9]+)*$
\__________/| \__________/|\
"word" | "word" | zero-or-more
\_____________/
group together
这匹配至少一个“单词”的字符串,其中单词由一个或多个“alpha”组成,其中“alpha”由字母和数字组成。可以跟随更多“单词”,并且它们总是以短划线分开。
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打击”主题的相关问题的链接。邀请社区参与。
-this--is---a-test--
变为this-is-a-test
spam123-spam-eggs-eggs1
拒绝eggs1-
,-spam123
,spam--spam