2017-01-12 24 views
0

我正在验证各种输入数据参数。使用.match验证字符串()

我试图找出.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'); 
+0

为什么你不运行代码并看看它做了什么?或阅读正则表达式教程?或者将其粘贴到regexp检查器中,例如regex101.com,它会给你类似英语的描述。 –

回答

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

+0

你的描述描述'match',然后你的例子使用'test'。 –

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');

但是,这就是选择(味道,等等),或多或少的事...