编程语言
首页 > 编程语言> > javascript – 了解正则表达式?

javascript – 了解正则表达式?

作者:互联网

在回答我的一个问题时,有人发布了:

// 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]);
    }
}

我完全迷失在/(;)(?![“;”])/.它看起来像一堆随机符号给我:(.

哪里可以了解有关正则表达式语法的更多信息

解决方法:

有各种资源:

> MDC
> The specification(但那将是艰难的)
> JavaScript Kit的introreference
> evolt的Regular Expressions in JavaScript

关于实际表达式,/ characters标记正则表达式文字的开头和结尾(就像字符串的引号一样,尽管结尾/可能后跟标志),然后:

     +------------- 1
     |+------------ 2
     ||+----------- 3
     ||| +--------- 4
     ||| |
     ||| |
     ||| | +------- 5
     ||| | | +----- 6
     ||| | | | +--- 7
     ||| | | | |+-- 8
     |||/ \|/ \||
    /(;)(?![";"])/

>(在这种情况下启动一个捕获组(因为(后面没有?,=或!改变了它的作用)
>;是一个文字,它匹配分号
>)结束捕获组
>(?!启动“负向前瞻”,这样整体表达式只有在分号后面找不到括号内的内容时才匹配
> [开始一个字符类,它匹配其中的任何字符
>“;”是字符类中的字符. (第二个“是多余的.”字符类包含contains;和“.
>]结束角色类
>)结束#4开始的负向前瞻

总而言之,匹配(并捕获)分号,前提是它不会立即跟引号或分号.我看不出捕获分号的任何特殊原因,但也许在推荐这个问题的背景下有一个原因.

标签:javascript,regex,lookahead
来源: https://codeday.me/bug/20190723/1515553.html