我正在研究xml的正则表达式,我很难过。谁能指出我哪里出错?我正在尝试验证一个城市名称,我可以在其中包含大小写字母和所有特殊字符,以及单词之间的空格,开头或最后一个单词后面没有空格。没有数字允许。我研究过,似乎无法取得任何进展。以下是我到目前为止的任何帮助,非常感谢:
^[a-zA-Z\s.\-_|\/\\@#~=%,;?!'"`():$+*\^\[\]&<>{}]*$
答案 0 :(得分:0)
更容易指定补语集
/^[^0-9 ][^0-9]+[^0-9 ]$/
以非空格或非数字开头和结尾,不应包含其间的数字。请注意,这需要至少3个字符作为最小长度。你可以定制它传递一个字符,但会使表达式复杂化。
答案 1 :(得分:0)
您可以使用否定字符集[^ <characters> ]
来禁止数字和前导/尾随空格,如下所示:
^(?:(?! )[^0-9]*[^ 0-9])?$
<强>故障:强>
匹配可选组:
断言第一个字符不是空格;
匹配任意数量的非数字;
匹配一个也不是空格的单个非数字。
演示(JavaScript):
var re = /^(?:(?! )[^0-9]*[^ 0-9])?$/
console.log(re.test(' ')) //=> false
console.log(re.test(' city ')) //=> false
console.log(re.test('city name')) //=> true
console.log(re.test('')) //=> true (if this is undesirable behavior, let me know)
console.log(re.test(' c')) //=> false
&#13;
答案 2 :(得分:0)
你可以使用这个正则表达式,正如其他人所说的那样,使用补码集来匹配除指定事物之外的任何东西。 这将使用长度为1或更长的字符串,您将捕获一个额外的组,但您可以忽略它:
^[^\d\s]([^\d]*[^\d\s])?$/m
^[^\d\s]
确保字符串以与数字或任何类型的空格不匹配的内容开头。
([^\d]*[^\d\s])?$
这确保字符串以不是数字或任何类型的空格结束,同时使用?
来确保长度为`的字符串匹配!