我想测试用户是否只键入字母数字值或一个“ - ”。
hello-world -> Match
hello-first-world -> match
this-is-my-super-world -> match
hello--world -> NO MATCH
hello-world-------this-is -> NO MATCH
-hello-world -> NO MATCH (leading dash)
hello-world- -> NO MATCH (trailing dash)
这是我到目前为止所做的,但我不知道如何实施“ - ”符号来测试它,如果它只是一次而不重复。
var regExp = /^[A-Za-z0-9-]+$/;
答案 0 :(得分:14)
试试这个:
/^[A-Za-z0-9]+(?:-[A-Za-z0-9]+)*$/
这将仅匹配由单个-
分隔的一个或多个字母数字字符序列。如果您不想允许使用单个字词(例如只需hello
),请将*
乘数替换为+
,以仅允许最后一个组重复一次或多次。
答案 1 :(得分:5)
你去(这是有效的)。
var regExp = /^[A-Za-z0-9]+([-]{1}[A-Za-z0-9]+)+$/;
字母和数字贪婪,单个短划线,重复此组合,以字母和数字结尾。
答案 2 :(得分:2)
(^-)|-{2,}|[^a-zA-Z-]|(-$)
查找无效字符,因此与该模式的零匹配将满足您的要求。
答案 3 :(得分:0)
我不完全确定这是否有效,因为我暂时没有使用正则表达式,但听起来你需要以下内容:
/ ^ [A-ZA-Z0-9] +( - [A-ZA-Z0-9] +)+ $ /
您的要求在以下内容中分开:
我只是不确定我是否正确地使用正则表达式来遵循这种格式。