正则表达式 - 字符匹配不以某字段开头或者结尾
最近有一个需求,要求是判断某个字符串不以什么开头。然后就开始探索这个不以什么开头和不易什么结尾的正则怎么写,why?
不以某字符串开头
这里需要提一个概念叫 `否定式前项匹配` 这个东东。
向前匹配
根据匹配的字符序列后面存在`一个特定的字符序列`或者`不存在一个特定的序列`来决定是否匹配。对于向前匹配,出现在指定项后面的字符序列不会被正则表达式返回。
这里说后面存在一个特定字符序列, 也称之为肯定式向前查找
不存在一个特定的序列,也称之为否定式向前查找
这两个概念后续再深入
开始解决这个问题不以某字符串开头:
^(?!str)
这里使用了下面几个元符号:
- `^` 判断是否是开头
- `?!` 这里是否定向前查询
示例:
- 不以test 开头字符串
/^(?!test).*/