使用.match()验证字符串

时间:2017-01-12 12:55:36

标签: javascript

我正在验证各种输入数据参数。

我正在试图找出.match和RegExp。

这似乎验证字符串是否仅包含0-9个字符:

!str.match(/^[0-9]+$/)

如果字符串包含其他内容,则会失败。

是否正确理解,或者只是检查字符串是否包含任何0-9个字符?

所以我能做到:

if (!string.match(/^[0-9]+$/))
    console.log('fails as the string contains other characters than 0-9');

2 个答案:

答案 0 :(得分:1)

就个人而言,我会使用这样的东西:



string='188867899';
var regex = /\D/; //any non-digit character
if (regex.test(string)) //if string contains any non-digit char
console.log('String 1 contains non-digit chars');

string2='1888y67899';
var regex = /\D/; //any non-digit character
if (regex.test(string2)) //if string contains any non-digit char
console.log('String 2 contains non-digit chars');




但是,这个选择的问题(品味,无论如何),或多或少......

答案 1 :(得分:0)

match()方法在将字符串与正则表达式匹配时检索匹配。

您的正则表达式为/^[0-9]+$/,表示

^:在字符串

的开头断言位置

[0-9]:0(ASCII 48)和9(ASCII 57)范围内的单个字符

+:量词 - 在一次和无限次之间匹配,尽可能多次

$:在字符串

的末尾断言位置

以下代码段使用test()方法测试字符串中的匹配项。



var regex = /^[0-9]+$/;

console.log(regex.test("0123")); //true only 0-9
console.log(regex.test("1")); //true only 0-9
console.log(regex.test("")); //false Not at least 1 character 0-9
console.log(regex.test("a0123")); //false contains a letter
console.log(regex.test("abc")); //false contains multiple letters