正则表达式 - 必须包含数字,不得包含特殊字符

时间:2016-07-20 02:15:38

标签: javascript regex

我想通过正则表达式检查:

  1. 字符串包含数字
  2. 字符串不包含特殊字符(!<>?= + @ {} _ $%)
  3. 现在看起来像: ^[^!<>?=+@{}_$%]+$

    如何编辑此正则表达式以检查字符串中是否有数字(必须包含它)?

3 个答案:

答案 0 :(得分:3)

您可以将[0-9]+\d+添加到正则表达式中,如下所示:

^[^!<>?=+@{}_$%]*[0-9]+[^!<>?=+@{}_$%]*$ 要么 ^[^!<>?=+@{}_$%]*\d+[^!<>?=+@{}_$%]*$

[0-9]\d之间有所不同,请参阅here

答案 1 :(得分:2)

请向前看数字:

&#13;
&#13;
var re = /^(?=.*\d)[^!<>?=+@{}_$%]+$/;

console.log(re.test('bob'));
console.log(re.test('bob1'));
console.log(re.test('bob#'))
&#13;
&#13;
&#13;

(?=.*\d)部分是输入中某处的单个数字的预测。

答案 2 :(得分:0)

你只需要添加号码检查,是吗?你可以这样做:

/^(?=.*\d)[^!<>?=+@{}_$%]+$/

我们做一个预测(比如偷看下面的字符而不移动我们在字符串中的位置)来检查字符串中是否有至少一个数字。 然后我们正常检查以确定这些符号是否都不是那些符号,在我们去的时候通过字符串移动。

正如注释:如果您想匹配换行符(a.k.a。换行符),则可以将点.更改为[\W\w]。这匹配任何角色。你可以通过多种方式实现这一目标,但它们彼此之间几乎一样笨重,所以它取决于你。