如何编写匹配除单独数字0以外所有数字的正则表达式?
正则匹配除单独0外所有数字的解决方案
你之前使用的[^0]+存在逻辑问题:该表达式匹配的是所有不包含字符0的连续内容,只要数字中出现0就会被截断或直接排除,自然无法正常识别10、50这类包含0的多位数。
正确正则表达式
根据使用场景分为两种:
- 整串校验(校验输入的字符串是否为符合要求的数字):
^(?!0$)\d+$ - 文本提取(从大段文本中提取符合要求的独立数字):
\b(?!0\b)\d+\b
规则说明
(?!0$)/(?!0\b)是负向前瞻断言,只会排除「完全等于0的独立数字」,不会影响包含0的其他数字的匹配\d+匹配1位及以上的阿拉伯数字- 整串校验的
^和$分别对应字符串的首尾边界,提取场景的\b对应单词边界,避免数字和其他字符粘连时的误匹配
测试用例
符合规则(可匹配):1、9、10、50、100、1024
不符合规则(不可匹配):0
内容的提问来源于stack exchange,提问作者Lukáš Pištěk
相关产品推荐
相关产品推荐

