如何为字符串构建显式正则表达式,其中字母在开头,下划线或数字在中间,字母或数字在末尾?到目前为止尝试的模式可以在测试用例中看到。https://regex101.com/r/JedpJu/3我想过滤掉如下所示的字符串。_(仅下划线)9a_d(以数字开头的字符串)ad_(以下划线结尾)编辑ad*d_rr(除下划线外的任何特殊字符也不应被允许。
1 回答

牧羊人nacy
TA贡献1862条经验 获得超7个赞
您可以使用
^[A-Za-z](?:[A-Za-z0-9_]*[A-Za-z0-9])?$
这与
^[A-Za-z](?:\w*[A-Za-z0-9])?$
观看正则表达式演示
在Java中,您可以将其与锚点一起使用并省略锚点:.matches()
s.matches("[A-Za-z](?:[A-Za-z0-9_]*[A-Za-z0-9])?") s.matches("[A-Za-z](?:\\w*[A-Za-z0-9])?")
如果字符串可能包含换行符,请使用
s.matches("(?s)[A-Za-z](?:[A-Za-z0-9_]*[A-Za-z0-9])?") s.matches("(?s)[A-Za-z](?:\\w*[A-Za-z0-9])?")
其中,可以匹配换行符。(?s)
.
添加回答
举报
0/150
提交
取消