正则表达式在字符串中的任何位置查找数字(断言字符串中没有数字)

时间:2014-07-10 10:38:55

标签: regex

我正在尝试构建一个正则表达式,它将禁止字符串中任意位数0到9中的一个或多个作为验证例程的一部分。字符串允许包含字母,带重音符号,标点符号,空格等

通过建议编辑:更好地陈述我的要求是在字符串中断言没有数字。

我通过示例regexp=^[A-Za-z]{1,20}$给出允许最多20个字母字符

我试过[^0123456789]这不允许数字,但如果还有字母,空格或标点符号则不允许。

使用Javascript

我最有责任为此提供任何帮助。感谢

3 个答案:

答案 0 :(得分:3)

有一个特殊的shorthand character class \D只能匹配不是数字的字符。因此,您可以使用

^\D*$

确保您的字符串不包含任何数字。

/^\D*$/.test(subject)
如果True不包含任何(ASCII)数字,

将返回subject

答案 1 :(得分:3)

你可以试试这个,

^[^0-9]{1,20}$

此处不使用字符类,它允许除数字之外的所有字符。字符长度必须为1到20(即最多20个字符)。

DEMO

答案 2 :(得分:2)

如果您想禁止字符串中的数字:

^[^0-9]*$

正则表达式的工作原理如下:[0-9]是所有数字的列表。通过将抑扬符放在组中,您将获得否定(因此任何字符例外都是数字)。

通过添加星号,您可以说它可以匹配任意数量的非数字。

现在我们只需要强制正则表达式跨越整个字符串。这是通过在前面放置一个回旋和在最后放置一个美元来完成的。