求助:编写正则表达式检测字符串中的除零运算场景
检测除零运算的正则方案
核心逻辑
分两步判断:
- 若字符串包含单引号(
')或双引号("), 直接返回false - 若字符串存在除法运算符后紧跟纯0序列的合法运算场景, 返回
true, 否则返回false
正则表达式实现
第一步:检查引号
匹配规则:['"]
只要字符串匹配该正则,直接判定为false
第二步:检测除零运算
匹配规则:
(?:^|[+\-*/&|<>()\s])\s*/\s*0+(?=\s*(?:[+\-*/&|<>()\s]|$))
正则解释
(?:^|[+\-*/&|<>()\s]): 匹配字符串开头,或任意合法运算符、括号、空格,确保/是作为除法运算符使用,而非字符串/标识符的一部分\s*/\s*: 匹配除法运算符/,前后允许任意数量的空格0+: 匹配一个或多个连续的0(即纯0组成的除数)(?=\s*(?:[+\-*/&|<>()\s]|$)): 正向预查,确保除数后是空格+运算符/括号/空格,或字符串结尾,避免误判/001这类除数为非0的情况
验证示例
- 匹配(返回
true):<<Employee Profile/Employee Data/Employee/Age>> / 1 * <<Employee Profile/Employee Data/Employee/Age>> / 00 + <<Employee Profile/Employee Data/Employee/Gender>> / 001(包含/ 00)<<Employee Profile/Employee Data/Employee/Age>>/01 / 0000 + 1 / 001/0
- 不匹配(返回
false):LENGTH("/0")(包含引号)100/001(除数为001,即1)abc/0x12(除数为0x12,非纯0)
内容的提问来源于stack exchange,提问作者aby007
相关产品推荐
相关产品推荐

