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中使用
    (?!…)表示
    语法。一旦你理解了这一点,它的其余部分就相当简单了。

    我有一个我经常提到的语法。我发现真正有用的方法是通过实践来学习。下面是一个简单的测试程序,它可以让你看到表达式的作用: