在工作中经常用到正则表达式,但是有些稍微复杂的表达式,又不能一气呵成,所以便需要经过调试。
可是国内的几款常见的在线测试工具,不支持PCRE,这里列举几个,如下:
- http://tool.chinaz.com/regex/
- https://c.runoob.com/front-end/854
- https://tool.oschina.net/regex
总不能为了这个自己再单独每次写用例,或者写个工具吧,于是找了个国外的 https://regexr.com/,如下图所示:
如果引擎选择JavaScript的情况下,就会提示不支持,如下:
下面举个实际应用中关于实现忽略大小写的方式。
java中使用正则表达式直接忽略大小写的写法,在javax.validation.constraints.Pattern
中的regexp参数进行匹配验证的时候可以使用这种模式,如下示例:
//regex ignore case
import org.junit.Test;
import java.util.regex.Pattern;
public class RegexTest {
@Test
public void testIgnoreCaseSensitivity() {
String content = "changyandouBLOG";
String pattern = "((?im)(changyandoublog|changyandouBLOG|changyandouBlog|CHANGYANDOUBLOG))";
boolean isMatch = Pattern.matches(pattern, content);
System.out.println("微信:changyandoublog " isMatch);
}
}
可以参考:Can you make just part of a regex case-insensitive? 中的解决方案,涉及到关于其中的 ?i 的用法在下图中有相对详细的描述:
(图片来自:Specifying Modes Inside The Regular Expression)