如何编写正则表达式检测字符串是否包含-0或-1?
解决正则匹配/-0和/-1的问题
嘿,刚入门正则的时候确实容易在转义字符上搞懵,我来帮你理清楚哈!
你要匹配的是/-0和/-1这两个特定字符串,问题出在正则的语法和转义方式上,我给你拆解两种正确的实现方式:
方法一:正则字面量写法(推荐)
这种写法更直观,直接用/包裹正则表达式,其中/是正则的特殊字符,需要用\转义,然后用|表示“或”的逻辑,或者用字符集简化:
写法1:明确匹配两个目标
const targetStr = "这里有/-0需要检测"; // 匹配/-0 或者 /-1 const regex = /\/-0|\/-1/; console.log(regex.test(targetStr)); // 输出 true
写法2:用字符集简化(更简洁)
因为两个目标只有最后一位不同(0或1),可以用[01]匹配这两个数字:
const regex = /\/-[01]/; console.log(regex.test("测试/-1内容")); // 输出 true
方法二:RegExp构造函数写法
如果用构造函数创建正则,要注意JS字符串本身的转义规则:字符串里的\需要写两次才能表示一个正则里的\,所以转义/就变成\\/:
const regex = new RegExp("\\/-0|\\/-1"); // 或者用字符集简化的版本 const regexSimple = new RegExp("\\/-[01]"); console.log(regex.test("包含/-0的文本")); // true console.log(regexSimple.test("包含/-1的文本")); // true
你原来写法的问题
你之前写的RegExp(\/-0 /-1\).test(string)有两个关键错误:
- 构造函数的参数必须是字符串,你没加引号,语法直接报错;
- 转义的逻辑不对,构造函数里的转义需要双重反斜杠,而且没有正确使用“或”的逻辑符号
|。
如果还有其他正则入门的小疑问,随时提哦!
内容的提问来源于stack exchange,提问作者Taylor Austin
相关产品推荐
相关产品推荐

