2017-10-07 36 views
0

我是想正則表達式模式進行比較,爲我的電話號碼輸入,看看它是否匹配的功能:正則表達式錯誤:比賽是不是

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

但是由於某些原因,它總是返回: 「匹配不功能'

任何想法如何解決這個問題?或者它爲什麼這樣工作?

謝謝!

+1

沒有必要使用'新RegExp',正則表達式字面''/.../就足夠了 – mfeineis

+0

請添加一些用例和外向化的結果。 –

回答

1

However for some reason it always return: 'Match is not a function'

Number型變量沒有match方法。

matchString類的方法,讓你的代碼更改爲

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

你可以使用RegExp#test

The test() method executes a search for a match between a regular expression and a specified string. Returns true or false .

,因爲它返回一個布爾值,它是在這裏想。

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

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