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

Javascript 检查字符串是否与JS中的正则表达式匹配,javascript,regex,match,Javascript,Regex,Match,我想使用JavaScript(可以与jQuery一起使用)进行一些客户端验证,以检查字符串是否与正则表达式匹配: ^([a-z0-9]{5,})$ 理想情况下,它将是一个返回true或false的表达式 我是JavaScript新手,match()做我需要做的事吗?它似乎检查字符串的一部分是否与正则表达式匹配,而不是整个字符串 如果只需要布尔结果,请使用: console.log(/^([a-z0-9]{5,})$/.test('abc1');//假的 console.log(/^([a-z

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

^([a-z0-9]{5,})$
理想情况下,它将是一个返回true或false的表达式

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

如果只需要布尔结果,请使用:

console.log(/^([a-z0-9]{5,})$/.test('abc1');//假的
console.log(/^([a-z0-9]{5,})$/.test('abc12'));//真的

console.log(/^([a-z0-9]{5,})$/.test('abc123');//如果您只想知道字符串是否与regexp匹配,请使用
使用
/youregexp/.test(yourString)

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

if(/(span|h[0-6]|li|a)/i.test("h3")) alert('true');
您还可以使用
match()

if (str.match(/^([a-z0-9]{5,})$/)) {
    alert("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
使用
test()
方法:

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

请尝尝这朵花:

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

试一试

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

log(/^[a-z\d]{5,}$/.test(“ab12”)我建议使用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]

你可以试试这个,它对我有用

 <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>

函数检查ValidaMount(金额){
变量a=/^(?:\d{1,3}(?:,\d{3})*\d+(:\.\d+)$/;
如果(金额匹配(a)){
警报(“匹配”);
}否则{
警报(“不匹配”);
}
}
const regExpStr=“^([a-z0-9]{5,})$”
const result=new RegExp(regExpStr,'g')。test(“您的字符串”)//这里我使用了'g',这意味着全局搜索

console.log(result)//如果匹配则为true,如果不匹配则为false
是否要完全匹配,或者只是字符串是否包含匹配的子字符串?完全匹配-不是匹配的子字符串。请注意,
RegExp
的版本允许将变量值注入regex字符串。必须在
new RegExp中删除双引号(“^([a-z0-9]{5,})$”
为了使它工作,正则表达式中的首字母“^”在那里起什么作用?@PedroD^意味着开始或以开始,因此您将如何做相反的事情?“不是以…”@PedroD@stackdave您是否正在使用Java而不是JavaScript?它使用数字的原因是数字被强制转换为字符串,因为它在需要字符串时作为参数提供。我不依赖此行为。这取决于您的环境对test()的实现。(匹配失败,因为数字没有
match
成员)。如果要将数字与正则表达式一起使用,我建议显式地将其转换为字符串(
string(123)
)。这里可以使用匹配,但如果您查看性能,
test
在我们只想验证字符串以匹配正则表达式而不从中提取子字符串时,性能会提高30%。@pmrotule是的,但应该在匹配描述之前提到它。test和match(以及matchAll)之间最显著的区别是match会返回所有匹配子字符串的列表,而test只会检查是否有匹配子字符串。检查regex方法,该代码只回答会给页面带来什么新值?目前这是最短的解决方案(由于regexp简化)
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]
 <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>