正则表达式,接受字母数字,非连续短划线和非连续空格

时间:2011-07-07 20:14:28

标签: regex

任何人都可以帮我创建一个接受字母数字(仅限数字和字母)以及破折号和空格的正则表达式。

它不应该接受连续的破折号和连续的空格。或短划线后跟白色空格,反之亦然。 它应始终以字母数字字符开头和结尾。

非常感谢你。任何帮助将非常感谢。 (^ - ^)V

'Abcde' , '324 3a-32' : valid

'-' , '324 3a - 32' , '-2323  d-', 'z- -a' : invalid

谢谢大家的帮助。 V(”)\

4 个答案:

答案 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- ]+$

here on Regexr

^匹配字符串的开头

$匹配字符串的结尾

[A-Za-z0-9- ]+匹配您想要的字符,至少一个

否定前瞻

(?!.*[- ]{2})确保行中没有 - 或空格

(?!^[- ])(?![- ]$)这两个确保它不会启动而不会以这些字符结束。

对于unicode答案,您应该指定您正在使用的语言

对于某些人,您可以使用\p{L} See here来描述具有“letter”属性的unicode代码点。

答案 3 :(得分:-2)

/[\da-z]+[ -]?([\da-z][ -]?)*[\da-z]/i