如何编写匹配仅含转义反斜杠、转义双引号字符串的正则
正则表达式修正方案
原正则问题分析
你之前编写的正则存在两个核心缺陷:
- 强制要求字符串中必须出现
\后接"或\的结构,因此不包含任何转义序列的普通字符串(如abc d)无法匹配 - 没有全局限制
\和"的出现规则,只要存在一个合法转义序列,剩余内容中的单独\或"不会被拦截,因此会误匹配foo\\"bar这类非法字符串
正确正则表达式
^([^"\\\r\n]|\\["\\])*$
规则说明
^和$限定匹配整个输入字符串- 分组内定义了两类合法字符单元:
[^"\\\r\n]:匹配所有不属于"、\、\r、\n的普通字符\\["\\]:匹配固定的合法转义序列,即\后只能紧跟"或\
- 末尾的
*表示上述合法单元可以出现0次或多次,天然支持空字符串匹配
匹配验证
- 可匹配正例:
abc d、my \"time\"、D:\\willy\\wonka、foo\\\"bar - 不可匹配反例:
my "laser"、D:\willi\badehose、foo\\"bar
内容的提问来源于stack exchange,提问作者Huy Tran
相关产品推荐
相关产品推荐

