2014-10-03 61 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; 
}} 
相关问题