我试图将正则表达式模式与我的数字输入进行比较,看看它是否匹配:
var number = '490351111313131';
var switchPrefix = new RegExp(/(4903|4905|4911|4936|564182|633110|6333|6759)/);
var stringToArray = number.split('').map(Number);
var x = parseInt(stringToArray.slice(0, 6).join(''), 10); => outputs 490351
console.log(typeof(x), x); => outputs number
if(x.match(switchPrefix)){
console.log(true);
}
但由于某种原因,它总是返回: '匹配不是功能'
知道怎么解决这个问题吗?或者它为什么这样工作?
谢谢!
答案 0 :(得分:1)
但由于某种原因,它总是返回:'匹配不是一个功能'
Number
类型变量没有match
方法。
match
是String
类的方法,因此请将代码更改为
if(String(x).match(switchPrefix)){
console.log(true);
}
答案 1 :(得分:0)
您可以使用RegExp#test
,
test()
方法执行搜索正则表达式与指定字符串之间的匹配项。返回true
或false
。
因为它返回一个布尔值,这是想要的。
function test(s) {
return /^(4903|4905|4911|4936|564182|633110|6333|6759)\d*$/.test(s);
}
console.log(test('490351111313131'));
console.log(test('1490351111313131'));