我希望使用JavaScript(也可以使用jQuery)来检查一个字符串是否匹配正则表达式^([a-z0-9]{5,})$
,并且得到true
或false
的结果。
match()
看起来是用来检查部分字符串是否匹配正则表达式,而不是整个字符串。它能解决这个问题吗?我能否通过修改适应它来解决这个问题?如何实现?
我希望使用JavaScript(也可以使用jQuery)来检查一个字符串是否匹配正则表达式^([a-z0-9]{5,})$
,并且得到true
或false
的结果。
match()
看起来是用来检查部分字符串是否匹配正则表达式,而不是整个字符串。它能解决这个问题吗?我能否通过修改适应它来解决这个问题?如何实现?
如果你只想得到布尔值结果,请使用regex.test()
:
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
如果您不需要捕获任何内容,则可以从正则表达式中删除()
。
使用test()
方法:
var term = "sample1";
var re = new RegExp("^([a-z0-9]{5,})$");
if (re.test(term)) {
console.log("Valid");
} else {
console.log("Invalid");
}
RegExp
的版本允许将变量值注入到正则表达式字符串中。 - Christophe Roussynew RegExp("^([a-z0-9]{5,})$")
中的双引号。 - Facundo Colombiermatch()
: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
String(123)
)。 - Bronzdragonmatch
不兼容,即使match
的调用方式相同。为什么这里不会发生相同的强制转换呢? - Karl Knechtelmatch
不是Number
的原型函数,所以您需要先将其转换为字符串。 - pmrotule如果您只想知道您的字符串是否与正则表达式匹配,请使用/youregexp/.test(yourString)
。
以下是一个示例,它查找特定的HTML标签,以便清楚地说明/someregex/.test()
返回布尔值:
if(/(span|h[0-6]|li|a)/i.test("h3")) alert('true');
记得对于整个字符串的精确匹配,如果您想测试字符串的完全匹配,请在开头使用^
并在结尾处使用$
。
例如:
/[a-z]+/.test('aaa111'); // true
/^[a-z]+$/.test('aaa111'); // false
let str = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
let regexp = /[a-d]/gi;
console.log(str.match(regexp));
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
/^[a-z\d]{5,}$/.test(str)
console.log( /^[a-z\d]{5,}$/.test("abc123") );
console.log( /^[a-z\d]{5,}$/.test("ab12") );
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>
match
不需要整个字符串与正则表达式匹配。但是,^
和$
锚点确保此正则表达式只能可能与整个字符串匹配 - 这就是它们的目的。 - Karl Knechtel