我需要一个用于验证城市文本框的正则表达式,城市文本框字段只接受字母、空格和破折号 (-)。
最佳答案
这可以是任意复杂的,这取决于您需要匹配的精确程度以及您愿意允许的变化。
一些相当简单的东西,比如 ^[a-zA-Z]+(?:[\s-][a-zA-Z]+)*$
应该管用。
警告 :这与 München 等城市不匹配,但在这里您基本上需要使用表达式的 [a-zA-Z] 部分,并定义特定情况下允许使用的字符。
请记住,它也允许像 San----Francisco 这样的东西,或者有几个空间。
翻译成类似的东西:
1 个或多个字母,后跟一个块: 0 个或多个空格或破折号和更多字母,最后一个块可以出现 0 次或多次。
里面有奇怪的东西:?:
少量。如果您不熟悉正则表达式,它可能会令人困惑,但这只是说明括号之间的正则表达式不是捕获组(我不想捕获它匹配的部分以供以后重用),因此括号仅用于对表达式进行分组(而不是捕获匹配项)。
"New York" // passes
"San-Francisco" // passes
"San Fran Cisco" // passes (sorry, needed an example with three tokens)
"Chicago" // passes
" Chicago" // doesn't pass, starts with spaces
"San-" // doesn't pass, ends with a dash
关于regex - 城市名称的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11757013/