regex - 不接受单个下划线但接受单个字母的正则表达式
问题描述
该表达式不应接受除下划线和其中没有数字之外的任何特殊字符,并且它应该接受单个或多个字母。
例子
abc_dc(应该被接受)
_bsc(应该被接受)
A(应该接受)
_(不应接受)
a__b(不应被接受)
我试过了:
(^(?!.*?[_]{2})[^_][a-zA-Z_]+$)
但这不接受单个字母。
解决方案
您可以尝试以下模式:
^(?=.*[a-zA-Z])(?=[a-zA-Z_]+$)(?!.*_{2,}).+
图案说明:
通常,通过在模式的开头放置前瞻来实现多个验证,我使用了相同的策略。
解释:
^
- 锚点 - 匹配字符串的开头
(?=.*[a-zA-Z])
- 正向前瞻 - 断言当前位置后面是零个或多个任何字符 ( .*
) 后跟字母字符。简单地说——断言下面的内容至少包含一个字母。
(?=[a-zA-Z_]+$)
- 断言后面的内容仅包含字母或下划线,直到字符串结束(感谢$
)。
(?!.*_{2,})
- 否定前瞻 - 断言后面的内容不包含两个(或更多)以下下划线(感谢_{2,}
.+
- 匹配一个或多个任意字符。
推荐阅读
- c - 在 C 中创建 pop() 函数堆栈实现
- python - 'Manager' 对象没有属性 'normalize_email'
- c++ - 从尝试中获取不可复制的对象
- mesibo - Medibo javascript getcontacts : AUTHFAIL
- objective-c - 'NSArray 没有可见的@interface
' 声明选择器 'addObject:' Swift - django - Heroku Django 数据库连接
- wordpress - 检查 ModRewrite .htaccess 并禁用插件后,Wordpress 永久链接损坏
- javascript - 如何在 Kendo Grid 中设置列优先级
- javascript - 如何从浏览器中检索旧的控制台日志?
- python - JIRA python库JiraError 400:无法设置字段“摘要”