求匹配允许以数字开头的变量/函数名且排除数字字面量的正则表达式
符合要求的变量名匹配正则表达式
正则表达式
^(?!(?:\d+(?:\.\d*)?|\.\d+|0(?:[boxBOX][0-9a-fA-F]+|[0-7]+))$)[a-zA-Z0-9_]+$
详细解释
- 边界控制:
^和$锁定整个字符串,确保不会仅匹配目标字符串的一部分。 - 否定前瞻(排除数字字面量):
\d+(?:\.\d*)?:匹配十进制整数(如42)、带小数的数字(如6.4222、6.)\.\d+:匹配以小数点开头的小数(如.42)0(?:[boxBOX][0-9a-fA-F]+|[0-7]+):匹配各类特殊进制整数:- 二进制:
0b/0B开头+二进制数字(如0b101010) - 十六进制:
0x/0X开头+十六进制数字(如0x2a、0X2A) - 八进制:包括标准
0o/0O前缀形式,以及旧风格0开头+0-7数字(如052)
- 二进制:
- 变量名匹配:
[a-zA-Z0-9_]+匹配由字母、数字、下划线组成的字符串,长度至少为1。
匹配验证
以下字符串会被正确匹配:
0orange 1kiwi 8apple main get_user_input _ _callable
排除验证
以下数字字面量会被排除:
- 十进制整数:
42 - 旧风格八进制:
052 - 小写十六进制:
0x2a - 大写十六进制:
0X2A - 二进制:
0b101010 - 小数:
6.4222
内容的提问来源于stack exchange,提问作者Toothpick Anemone
相关产品推荐
相关产品推荐

