我正在做正则表达式来检查slu ..
实际上我的正则表达式是:/^[^-][a-z\-].*[^-]+$/
这是我现在正在检查的内容:
my-awesome-project
=>有效
-my-awesome-project
=>无效
my-awesome-project-
=>无效
现在我想要的是检查短划线是否重复:
my-awesome-project
=>应该是有效的
my-awesome--project
=>不应该有效
my----awesome-project
=>不应该有效
我可以使用正则表达式吗?
谢谢,
答案 0 :(得分:3)
我认为这个正则表达式应该有效:
/^[a-z]+(-[a-z]+)*$/
这样做:^[a-z]+
匹配,如果字符串至少以字符开头。之后,可能会有(-[a-z]+)*$
个零或更多的短划线,然后再出现至少一个角色。
见Rubular。
答案 1 :(得分:1)
据我了解,该字符串有效,除非:
如果是这种情况,最简单的方法是检查它是否无效:
R = /
[^a-z-] # match one character other than a lower-case letter or hyphen
| # or
^- # match a hyphen as the first character
| # or
-$ # match a hyphen as the last character
| # or
-- # match two hypens
/x
def valid?(str)
str !~ R
end
valid? 'my-awesome-project' #=> true
valid? '-my-awesome-project' #=> false
valid? 'my-awesome-project-' #=> false
valid? 'my-awesome--project' #=> false
valid? 'my----awesome-project' #=> false
答案 2 :(得分:0)
以下正则表达式可能会有所帮助。
[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*