求匹配非以MY或BY开头字符串的正则表达式
嗨,我来帮你搞定这个正则表达式的问题~
匹配不以MY/BY开头的字符串的正确写法
你之前尝试的/^my&&^by/没法正常工作,是因为正则里根本没有&&这种逻辑与的语法,而且你的需求其实是要排除以my或by开头的字符串,这时候用否定前瞻断言就对了。
区分大小写的版本(仅排除小写my/by开头)
直接用这个正则:
/^(?!my|by).+/
不区分大小写的版本(排除所有大小写组合,比如MY/My/by/BY等)
加上i修饰符即可:
/^(?!my|by).+/i
拆解一下这个正则的逻辑:
^:锚定到字符串的起始位置,确保我们检查的是开头的字符(?!my|by):这是核心的否定前瞻,意思是“从当前位置开始,后面不能是my或者by”.+:匹配任意非换行的字符至少一次(如果需要允许空字符串,把+换成*就行)
测试你的预期案例:
mycountry:开头是my,触发否定前瞻的排除规则,匹配结果为falsebyyou:开头是by,同样被排除,匹配结果为falsexyz:开头既不是my也不是by,符合规则,匹配结果为true
完全符合你想要的结果哦~
另外提一句,如果你的场景允许不用正则,直接用字符串的startsWith方法判断也很简单(比如JS里!str.startsWith('my') && !str.startsWith('by')),但如果必须用正则的话,上面的写法就完美解决问题啦。
内容的提问来源于stack exchange,提问作者Ashutosh Jha
相关产品推荐
相关产品推荐

