正则表达式没有数字和单词之间的空格

时间:2017-03-03 19:15:29

标签: regex xml

我正在研究xml的正则表达式,我很难过。谁能指出我哪里出错?我正在尝试验证一个城市名称,我可以在其中包含大小写字母和所有特殊字符,以及单词之间的空格,开头或最后一个单词后面没有空格。没有数字允许。我研究过,似乎无法取得任何进展。以下是我到目前为止的任何帮助,非常感谢:

^[a-zA-Z\s.\-_|\/\\@#~=%,;?!'"`():$+*\^\[\]&<>{}]*$

3 个答案:

答案 0 :(得分:0)

更容易指定补语集

/^[^0-9 ][^0-9]+[^0-9 ]$/

以非空格或非数字开头和结尾,不应包含其间的数字。请注意,这需要至少3个字符作为最小长度。你可以定制它传递一个字符,但会使表达式复杂化。

答案 1 :(得分:0)

您可以使用否定字符集[^ <characters> ]来禁止数字和前导/尾随空格,如下所示:

^(?:(?! )[^0-9]*[^ 0-9])?$

<强>故障:

  • 匹配可选组:

    • 断言第一个字符不是空格;

    • 匹配任意数量的非数字;

    • 匹配一个也不是空格的单个非数字。

演示(JavaScript):

&#13;
&#13;
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;
&#13;
&#13;

答案 2 :(得分:0)

你可以使用这个正则表达式,正如其他人所说的那样,使用补码集来匹配除指定事物之外的任何东西。 这将使用长度为1或更长的字符串,您将捕获一个额外的组,但您可以忽略它:

^[^\d\s]([^\d]*[^\d\s])?$/m

说明:

  • ^[^\d\s]确保字符串以与数字或任何类型的空格不匹配的内容开头。

  • ([^\d]*[^\d\s])?$这确保字符串以不是数字或任何类型的空格结束,同时使用?来确保长度为`的字符串匹配!