我必须创建一个特定的正则表达式,问题是无论我尝试过什么,最终都不会成功。我看到过类似的帖子使用负向后看来解决这个问题,但在我的版本中显然不支持。
我要创建的正则表达式应该:
可以识别以下划线开头的标识符,MANDATORY后面跟一个字母字符,后面跟一个或多个字母数字或下划线字符。字符串不能以下划线结尾是很重要的。
我试过这个_*[a-zA-Z][a-zA-Z0-9_]*[^_]$
,但它不会为所有的情况下工作.
此外,这种带有负面后视的解决方案给我带来了问题_*[a-zA-Z][a-zA-Z0-9_]*$(?<!_)
已受理案件的一些例子:
- a5
1.第5版第3版 - a5_v2_2
且未被接受 - 5_v_2
- a5版本2
1.第5版第2版 - 5个
- a_
- a5-v-2
1条答案
按热度按时间4nkexdtk1#
可以下划线开头
使用
_?
而不是_*
MANDATORY后接字母字符
[a-zA-Z]
看起来不错,这取决于可以接受哪些字母后面跟着一个或多个字母数字或下划线字符。
我们将
[a-zA-Z0-9_]*
与*
一起使用,而不是与+
一起使用,因为:字符串不能以下划线结尾,这一点至关重要
这是最后一个区块
[a-zA-Z0-9]
最终结果:
_?[a-zA-Z][a-zA-Z0-9_]*[a-zA-Z0-9]