没有空格或数字的名字的正则表达式模式

时间:2019-03-28 20:07:13

标签: regex

我有这种正则表达式模式

/ ^ [^-\ s] [^ 0-9] [a-zA-Z \ s-] + $ /

对于在https://www.regextester.com/上进行测试的原因我有些困惑 我的模式允许在字符串之前添加一个数字。这意味着,如果我输入“ 2Mantas”,它将仍然接受,而“ 22Mantas”将无法通过测试。我不希望有任何数字或空格。有任何想法吗?

3 个答案:

答案 0 :(得分:0)

当前正则表达式中的前两个规则分解为以下内容:

  1. ^[^\s-]-字符串中的第一个字符不应为空格或连字符。这说明了为什么接受2steve-2不是空格或连字符。
  2. [^0-9]-strnig中的第二个字符不应为数字。这说明了为什么不接受22steve的原因-第二个位置的2是一个数字,这违反了此规则。

假设您的名字输入中除了大写字母和小写字母之外,什么都不想要,并且 的名称不应以空格或连字符开头,因此可以简化为您的子集当前的正则表达式:

/^[A-Za-z][A-Za-z-\s]+$/

Regex101

答案 1 :(得分:0)

您有两个否定组,所以说第一个字符不能为空格,第二个字符不能为数字。如果将空格和数字放在第一个方括号中,它将按预期工作。

^[^-\s\d][a-zA-Z\s-]+$

答案 2 :(得分:0)

这应该有效

获取字符串,该字符串以一位开头,并且在该数字之后应为表达式,仅包含字符串(贪心)

^\d{1}([a-zA-Z]+)

https://regex101.com/r/wtBwd7/1