RegExp错误:匹配不是一个函数

时间:2017-10-07 12:18:55

标签: javascript regex

我试图将正则表达式模式与我的数字输入进行比较,看看它是否匹配:

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

但由于某种原因,它总是返回: '匹配不是功能'

知道怎么解决这个问题吗?或者它为什么这样工作?

谢谢!

2 个答案:

答案 0 :(得分:1)

  

但由于某种原因,它总是返回:'匹配不是一个功能'

Number类型变量没有match方法。

matchString类的方法,因此请将代码更改为

 if(String(x).match(switchPrefix)){
    console.log(true);
  }

答案 1 :(得分:0)

您可以使用RegExp#test

  

test() 方法执行搜索正则表达式与指定字符串之间的匹配项。返回truefalse

因为它返回一个布尔值,这是想要的。

function test(s) {
    return /^(4903|4905|4911|4936|564182|633110|6333|6759)\d*$/.test(s);
}

console.log(test('490351111313131'));
console.log(test('1490351111313131'));