javascript - 如何准备正则表达式有两个条件
问题描述
你能告诉我当三个相同的字符不允许时的模式是什么我有一个几乎没有验证的名称字段
- 名称不应包含测试“文本”
我检查了使用indexOf
.
- 名称不应包含三个连续的字符,例如“abc”、“pqr”、“xyz”
- 名称不应包含三个相同的字符,例如“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')
}
解决方案
您可以使用正则表达式中的替代方法来完成所有这些操作。
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
选项使其不区分大小写。
推荐阅读
- javascript - Photoshop CC Javascript - 删除/剪切选区
- javascript - 在 onbeforeunload 事件期间执行调用
- php - 无法将 PHP7 安装到 AWS EC2 实例?
- python - 如何将参数传递给夹具并在测试方法中使用此夹具?
- ruby-on-rails-4 - 升级到 Rails 5.2 后 nil:NilClass 的未定义方法“expr”
- mysql - 使用 percona xtrabackup 将 Mysql 数据库迁移到 AroraDB
- python - Python-camelot(安装时出现错误:GhostscriptNotFound)
- scenebuilder - 场景生成器按钮 ID
- hadoop - 修改一个副本也会改变其他两个副本吗?
- sql - 使用 DATEADD 和 DATEDIFF 会截断时间