Javascript 检查字符串是否与JS中的正则表达式匹配
我想使用JavaScript(可以与jQuery一起使用)进行一些客户端验证,以检查字符串是否与正则表达式匹配: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
^([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>