我需要一个仅接受的表达式:
也不允许有空格。
例:
正则表达式应匹配:
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 的开头和结尾[...]
是字符类字符类中的
a-z
,A-Z
,0-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
关于regex - 如何编写正则表达式以仅匹配数字,字母和破折号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3224419/