2014-10-03 96 views
-1

我需要編寫一個正則表達式來檢查字符串是否匹配格式「ACT」後跟6位數字,例如。 'ACT123456'Javascript正則表達式無法正常工作;總是返回false

雖然看起來很簡單,但我的選擇都不起作用;該函數總是返回false。

我嘗試以下組合: 純regexpression文字

var format = /^ACT\d{6}$/; 
var format = /^ACT[0-9]{6}$/; 

或使用正則表達式的對象與雙逃逸,並用單逃逸(\ d)

var format = new RegExp("^ACT\\d{6}$"); 
var format = new RegExp("^ACT[0-9]{6}$"); 

(例如\\ d。)我的測試功能是:

function testPattern(field, pattern) { 
    if (!pattern.test(field)) { 
     return false;} 
    else { 
     return true; 
    }} 
+3

什麼是'field'的價值? – Toto 2014-10-03 12:49:07

+1

這工作? 'testPattern(「ACT123456」,/^ACT \ d {6} $ /)' – 2014-10-03 12:51:54

+1

'if-else'爲什麼不使用'pattern.test(field)'呢?或'!! pattern.test(field)'如果你想100%肯定,那個值是'Boolean'類型的? – 2014-10-03 13:08:46

回答

0
var format = /^ACT\d{6}$/; 

工作正常,但該字符串必須ACT123456究竟有沒有在它之前或之後它

'ACT123456 '失敗

使用

/ACT\d{6}/ 

,讓更多的寬容或第一條帶從字符串的空白

0
var testString = "ACT123456"; // string to test 
// pattern as a regex literal 
var pattern = /^ACT[0-9]{6}$/g; 

console.log(testString.match(pattern)); // output: ["ACT123456"] 
0

謝謝大家的回答和fe edback!

在被正則表達式困住之後,我意識到我的問題是我沒有在函數中使用field.value。

那麼,問題出在功能必須是:

function testPattern(field, pattern) { 
if (!pattern.test(field.value)) { 
    return false;} 
else { 
    return true; 
}} 
相關問題