【问题标题】:how to prepare regex have two conditions如何准备正则表达式有两个条件
【发布时间】:2019-04-11 15:03:51
【问题描述】:

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

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

我使用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')
}

【问题讨论】:

  • 您的第二条规则中的意思是 "pqr" 吗?
  • Name should not contain three consecutive charecters 那么,如果字母字符不能连续出现 3 次,除了字母字符之外,还允许使用哪些类型的字符?或者,你是什么意思?
  • 是的“pqr”无效
  • @CertainPerformance 他的意思是它不能包含字母表中连续的3个连续字母,例如abcjkl
  • @CertainPerformance 我想你没理解我的问题

标签: javascript regex


【解决方案1】:

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

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 选项使其不区分大小写。

【讨论】:

    猜你喜欢
    • 2016-08-23
    • 1970-01-01
    • 2020-06-20
    • 2011-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-19
    • 1970-01-01
    相关资源
    最近更新 更多