首页 > 解决方案 > 如何准备正则表达式有两个条件

问题描述

你能告诉我当三个相同的字符不允许时的模式是什么我有一个几乎没有验证的名称字段

  1. 名称不应包含测试“文本”

我检查了使用indexOf.

  1. 名称不应包含三个连续的字符,例如“abc”、“pqr”、“xyz”
    1. 名称不应包含三个相同的字符,例如“aaa”、“ccc”、“zzz”

我们可以为它做一个正则表达式吗?我google了一下没找到

我试过这样

val ='a'
var phonenoRegex = /^a-zA-Z+$/;
if(val.toLowerCase().indexOf('test') !=-1&& phonenoRegex.test(val)){
alert('false')
}else {
alert('true')
}

标签: javascriptregex

解决方案


您可以使用正则表达式中的替代方法来完成所有这些操作。

if (/test|[^a-z]|(.)\1\1|abc|bcd|cde|def|...|wxy|xyz/i.test(val)) {
    alert('false');
} else {
    alert('true');
}

(.)\1\1匹配相同字符的 3 次重复;\1是对.匹配字符的反向引用。您只需将所有字母列为正则表达式中的替代字母,即可测试连续字母(替换...为我跳过的所有缺失字母)。您不需要toLowerCase(),因为该i选项使其不区分大小写。


推荐阅读