2017-11-18 155 views
0

我正在編寫一個腳本來檢查字符串內是否存在amex信用卡號。檢查字符串是否包含匹配正則表達式的子字符串

我的代碼如下所示:

let amexRegex= /^3[47][0-9]{13}$/; 

if(text.search(amexRegex) != -1){ 
    console.log('Found!'); 
} else { 
    console.log('Not found!'); 
} 

當我設置text'378734493671000'(有效的美國運通信用卡號),腳本打印出Found!,但如果我保持同樣的文字,並添加一些文字角落找尋它,像這樣:'378734493671000 ABCDEFG',它打印出Not found!

我應該改變什麼才能找到與正則表達式匹配的子字符串的發生? 我不需要一個匹配正則表達式的子字符串的索引,只是true \ false。

回答

1

講究,只有消除^$可能導致不正確的匹配,如長數字串。 你最好通過單詞邊界替換它們:

\b3[47][0-9]{13}\b 

Demo

+0

很好,我會接受這個答案 – kecman

2

^$分別限制匹配到字符串的開頭和結尾。刪除這些可能就足夠了。

+0

就是這樣,謝謝! – kecman

+0

您應該將第一個正確答案標記爲已接受。 – Eureka

2

你只需要刪除^$分別匹配統計和行末:

let amexRegex= /3[47][0-9]{13}/; 
+0

就是這樣,謝謝! – kecman

1
let amexRegex = /3[47][0-9]{13}/ 

if(amenxRegex.test(text) { 
    console.log('Found!') 
} else { 
    console.log('Not found!') 
} 
相關問題