Javascript 了解正则表达式?
在回答我的一个问题时,有人发布了:Javascript 了解正则表达式?,javascript,regex,lookahead,Javascript,Regex,Lookahead,在回答我的一个问题时,有人发布了: // could replace it with an easier to work with delimiter str.replace(/(;)(?![";"])/g, '|') // or split it, but skip over results that are just a ; var strArr = str.split(/(;)(?![";"])/); for (s in strArr) { if (strArr[s] !== "
// could replace it with an easier to work with delimiter
str.replace(/(;)(?![";"])/g, '|')
// or split it, but skip over results that are just a ;
var strArr = str.split(/(;)(?![";"])/);
for (s in strArr) {
if (strArr[s] !== ";") {
// do something with strArr[s]
console.log(strArr[s]);
}
}
我完全迷失在/(;)(?![“;”])/
。在我看来,它就像一堆随机符号:(
在哪里可以了解有关正则表达式语法的更多信息?有各种资源:
- (但这将很难做到)
- JavaScript工具包的
- 伊沃特氏
/
字符标记正则表达式文字的开头和结尾(就像引号用于字符串一样,尽管结尾的/
后面可能有标志),然后:
+------------- 1
|+------------ 2
||+----------- 3
||| +--------- 4
||| |
||| |
||| | +------- 5
||| | | +----- 6
||| | | | +--- 7
||| | | | |+-- 8
|||/ \|/ \||
/(;)(?![";"])/
+------------- 1
|+------------ 2
||+----------- 3
||| +--------- 4
||| |
||| |
||| | +------- 5
||| | | +----- 6
||| | | | +--- 7
||| | | | |+-- 8
|||/ \|/ \||
/(;)(?![";"])/
(
在这种情况下启动捕获组(因为(
后面没有?
,=
,或!
,这会改变它的功能);
是一个文本,它与分号匹配)
结束捕获组(?!
开始“负向前看”,因此只有在分号后找不到括号内的内容时,整个表达式才匹配[
开始一个字符类,它匹配其中的任何字符“;”
是字符类中的字符。(第二个“
是多余的。)字符类包含;
和“
]
结束字符类)
结束从#4开始的负前瞻该正则表达式中真正令人困惑的部分是负前瞻部分,它在javascript中使用
(?!…)表示
语法。一旦你理解了这一点,它的其余部分就相当简单了。我有一个我经常提到的语法。我发现真正有用的方法是通过实践来学习。下面是一个简单的测试程序,它可以让你看到表达式的作用:和