检查字符串是否与JS中的正则表达式匹配

时间:2011-07-06 21:08:51

标签: javascript regex match

我想使用JavaScript(可以使用jQuery)进行一些客户端验证,以检查字符串是否与正则表达式匹配:

^([a-z0-9]{5,})$

理想情况下,它将是一个返回true或false的表达式。

我是一个JavaScript新手,match()做我需要的吗?它似乎检查字符串的一部分是否匹配正则表达式,而不是整个事物。

11 个答案:

答案 0 :(得分:969)

如果你想要的只是一个布尔结果,请使用regex.test()

/^([a-z0-9]{5,})$/.test('abc1');   // false

/^([a-z0-9]{5,})$/.test('abc12');   // true

/^([a-z0-9]{5,})$/.test('abc123');   // true

...您可以从正则表达式中删除(),因为您不需要捕获。

答案 1 :(得分:141)

使用test()方法:

var term = "sample1";
var re = new RegExp("^([a-z0-9]{5,})$");
if (re.test(term)) {
    console.log("Valid");
} else {
    console.log("Invalid");
}

答案 2 :(得分:66)

您也可以使用match()

if (str.match(/^([a-z0-9]{5,})$/)) {
    alert("match!");
}

test()似乎更快,因为您可以阅读here

match()test()之间的重要区别:

match()仅适用于字符串,但test()也适用于整数。

12345.match(/^([a-z0-9]{5,})$/); // ERROR
/^([a-z0-9]{5,})$/.test(12345);  // true
/^([a-z0-9]{5,})$/.test(null);   // false

// Better watch out for undefined values
/^([a-z0-9]{5,})$/.test(undefined); // true

答案 3 :(得分:43)

如果您只想知道字符串是否与正则表达式匹配,请使用/youregexp/.test(yourString)

答案 4 :(得分:6)

这是一个查找某些HTML标记的示例,因此很明显/someregex/.test()返回一个布尔值:

if(/(span|h[0-6]|li|a)/i.test("h3")) alert('true');

答案 5 :(得分:2)

 let str = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
 let regexp = /[a-d]/gi;
 console.log(str.match(regexp));

答案 6 :(得分:2)

您可以尝试一下,它对我有用。

 <input type="text"  onchange="CheckValidAmount(this.value)" name="amount" required>

 <script type="text/javascript">
    function CheckValidAmount(amount) {          
       var a = /^(?:\d{1,3}(?:,\d{3})*|\d+)(?:\.\d+)?$/;
       if(amount.match(a)){
           alert("matches");
       }else{
        alert("does not match"); 
       }
    }
</script>

答案 7 :(得分:2)

const regExpStr = "^([a-z0-9]{5,})$"
const result = new RegExp(regExpStr, 'g').test("Your string") // here I have used 'g' which means global search
console.log(result) // true if it matched, false if it doesn't

答案 8 :(得分:1)

我建议使用execute方法,如果不存在匹配项,则该方法返回null,否则它将返回一个有用的对象。

let case1 = /^([a-z0-9]{5,})$/.exec("abc1");
console.log(case1); //null

let case2 = /^([a-z0-9]{5,})$/.exec("pass3434");
console.log(case2); // ['pass3434', 'pass3434', index:0, input:'pass3434', groups: undefined]

答案 9 :(得分:0)

请尝试这朵花:

/^[a-z0-9\_\.\-]{2,20}\@[a-z0-9\_\-]{2,20}\.[a-z]{2,9}$/.test('abc@abc.abc');
  

true

答案 10 :(得分:0)

尝试

 /^[a-z\d]{5,}$/.test(str)

console.log( /^[a-z\d]{5,}$/.test("abc123") );

console.log( /^[a-z\d]{5,}$/.test("ab12") );