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

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

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

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

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

1244716 次浏览

如果您想要的只是布尔结果,请使用#0

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

…您可以从regexp中删除(),因为您不需要捕获。

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

下面是一个查找某些超文本标记语言标签的示例,因此很明显/someregex/.test()返回一个布尔值:

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

Remember to indicate ^ for beginning of the string and $ for the end, if you want to test the exact match of entire string.

Example:

/[a-z]+/.test('aaa111'); // true/^[a-z]+$/.test('aaa111'); // false

您也可以使用match()

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

但是test()似乎更快,因为你可以阅读这里

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");}

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

试试这朵花:

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

真正

尝试

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

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

我建议使用执行方法,如果不存在匹配,则返回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>

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

如果你不想在正则表达式周围使用^和$(我有这样一个用例),你可以这样做

let reg = /[a-zA-Z0-9]+/glet txt = "hello"let matches = reg.exec(txt)[0] == txtconsole.log(`It ${matches ? "does" : "doesn't"} match`)

更新/添加

如果查询字符串不存在于URL中,那么下面的解决方案将在URL中添加参数,如果它已经存在,那么它将更新。

function updateUrlParameter(url, param, value) {var regex = new RegExp("(?<=[?|&])(" + param + "=)[^&]+", "i");if (regex.test(url)) {return url.replace(regex, param + "=" + value);} else {if (window.location.search) {return `${url}&${param}=${value}`;}else{return `${url}?${param}=${value}`;}}}