拆分数组regex (a但不是ab,不丢失a后的字符)
split array regex (a but not ab, without losing char after a)
我有以下内容
var example = "caty not caby";
example.split(/a[^b]/);
返回
[ "c", "y not caby" ]
但我正试图得到
["c","ty not caby"]
我怎么能在每个'a'而不是每个'ab'分开字符串而不丢失'a'之后的字符(在上面的例子中是't')?
其他答案都提到了负面展望,但我将尝试解释为什么需要使用
你的正则表达式a[^b]
匹配a和下一个字符,只要它不是b,所以它总是两个。在您的示例字符串中,这是"caty not caby",因为at匹配这两个。
超前模式被称为零宽度,因为它们进行检查但不被认为是匹配的一部分,因此a(?!b)
将精确匹配一个字符,即使模式同时使用a和b。
caty not caby
^^ ^
|| checked and rejected
||
|checked but not considered part of the match
character matched because the lookahead test passed
所以,这就是为什么这是有效的
var example = "caty not caby";
var split = example.split(/a(?!b)/)
console.log(split);
您可以使用负向前看并排除用于分割的序列。
var example = "caty not caby";
console.log(example.split(/a(?!b)/));
使用一个反向向前看断言:
/a(?!b)/
var example = "caty not caby";
console.log(example.split(/a(?!b)/));
相关文章:
- Regex匹配除“”之外的所有字符;.js”;
- regex/ng模式接受某些字符
- Regex测试特殊字符
- jQuery-Regex以防止任何特殊字符
- RegEx只获取特殊字符,前后不获取任何字符
- Regex-从字符第N次出现到字符串末尾的匹配
- Javascript Regex选择每个非字母数字字符和空白
- 为什么regex只验证字段中的一个字符,而不是所有输入的字符
- Regex查找前面没有特定字符的字符
- Regex:允许除某些选定字符之外的所有字符
- regex中连字符的这种用法有效吗
- Javascript和RegEx用于删除特殊字符
- JavaScript Unicode Regex - 字符类中的顺序范围
- REGEX (javascript) - 允许字母数字字符中的特殊字符不在第一个位置
- Javascript-使用Regex获取两个字符之间的字符
- regex,用于修改单词末尾特定大小写的字符
- Javascript RegEx在字符后匹配单词
- JavaScript-Regex删除代码/特殊字符/数字等
- JS Regex只允许数字、分号和连字符
- 检查值是否具有给定字符RegEx