任何人都可以帮我创建一个接受字母数字(仅限数字和字母)以及破折号和空格的正则表达式。
它不应该接受连续的破折号和连续的空格。或短划线后跟白色空格,反之亦然。 它应始终以字母数字字符开头和结尾。
非常感谢你。任何帮助将非常感谢。 (^ - ^)V
'Abcde' , '324 3a-32' : valid
'-' , '324 3a - 32' , '-2323 d-', 'z- -a' : invalid
谢谢大家的帮助。 V(”)\
答案 0 :(得分:8)
试试这个:
^[A-Za-z0-9]+(?:[\s-][A-Za-z0-9]+)*$
当第一个[A-Za-z0-9]+
用完字母和数字时,组内的[\s-]
会尝试匹配连字符或空白字符。如果成功,第二个[A-Za-z0-9]+
会尝试匹配更多的字母数字。根据需要,小组会重复多次。
答案 1 :(得分:1)
试试这个正则表达式:
^[a-zA-Z0-9]+([ \t-]?[a-zA-Z0-9]+)*$
答案 2 :(得分:0)
ASCII答案
^(?!.*[- ]{2})(?!^[- ])(?![- ]$)[A-Za-z0-9- ]+$
^
匹配字符串的开头
$
匹配字符串的结尾
[A-Za-z0-9- ]+
匹配您想要的字符,至少一个
否定前瞻
(?!.*[- ]{2})
确保行中没有 - 或空格
(?!^[- ])(?![- ]$)
这两个确保它不会启动而不会以这些字符结束。
对于unicode答案,您应该指定您正在使用的语言
对于某些人,您可以使用\p{L}
See here来描述具有“letter”属性的unicode代码点。
答案 3 :(得分:-2)
/[\da-z]+[ -]?([\da-z][ -]?)*[\da-z]/i