如何创建一个匹配所有开头不带数字的字母数字的正则表达式?
现在我有"^[0-9][a-zA-Z0-9_]"
例如,1ab 不匹配,ab1 匹配,1_bc 不匹配,bc_1 匹配。
你所写的内容存在三处错误。
首先,要否定一个字符类,您可以将^
inside括号内,而不是之前。^[0-9]
表示“字符串开头的任何数字”;[^0-9]
意思是“除了数字之外的任何东西”。
Second, [^0-9]
将匹配anything这不是数字,不仅仅是字母和下划线。你真的想说第一个字符“不是数字,而是数字、字母或下划线”,对吧?虽然不是不可能的也就是说,将其合并为“是一个字母或下划线”要容易得多。
另外,您忘记重复最后一个字符集。按原样,您正好匹配两个字符,所以b1
会起作用,但是b12
将不会。
So:
[a-zA-Z_][a-zA-Z0-9_]*
调试演示 https://www.debuggex.com/r/5EH1fYCkVJt3iG1Z
换句话说:一个字母或下划线,后跟零个或多个字母、数字或下划线。
我不完全确定这就是您真正想要的,至少如果正则表达式是您的整个解析器的话。例如,在foo-bar
,你想要bar
得到匹配?如果是这样的话,在123spam
,你想要spam
得到匹配?但这就是你想写的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)