Javascript正则表达式不起作用;总是返回false

时间:2014-10-03 12:47:18

标签: javascript regex

我需要编写一个正则表达式来检查字符串是否符合格式' ACT'然后是6位数,例如。 ' ACT123456'

虽然看起来很简单,但我的选择都不起作用;函数总是返回false。

我尝试了以下组合: 纯粹的regexpression文字

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

或者使用带双重转义的RegExp对象(例如。\\ d)和单次转义(\ d)

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

我的测试功能是:

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

3 个答案:

答案 0 :(得分:0)

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

工作正常,但字符串必须是ACT123456完全没有任何前置或跟随它

例如'ACT123456 '失败

使用

/ACT\d{6}/

允许更多容差或首先从字符串中删除空格

答案 1 :(得分: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"] 

答案 2 :(得分:0)

感谢所有人的回答和反馈!

在坚持使用正则表达式之后,我意识到我的问题是我在我的函数中没有使用field.value。

所以,问题在于必须具有以下功能:

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