gpt4 book ai didi

javascript - JS 中的局部修饰符

转载 作者:行者123 更新时间:2023-12-02 17:17:22 25 4
gpt4 key购买 nike

不知何故

var regex=/a(?i)b/;

让 Firefox 中的 JS 控制台告诉我“无效量词”。你知道这有什么问题吗?

更新:

我刚刚看到http://regex101.com/r/iW3kE7 (?i) 似乎不适用于 JS(但适用于 php)。如何在 JS 中执行诸如本地修饰符之类的事情?

我试图通过 (?i) 引入不区分大小写

最佳答案

回答更新的问题:

I'm trying to introduce case insensitivity by (?i).

您不能在 JavaScript 中执行此操作,整个表达式要么区分大小写,要么不区分大小写。您可以使用 i 获得不区分大小写的表达式。末尾标记:

var rex = /expression/i;

因此,如果您的目标是匹配 a (小写)后跟 bB ,表达式为:

var rex = /a[bB]/;

我确信您的实际用例并不那么简单,因此这将使您的真实表达变得相当复杂,但不幸的是,没有办法开始区分大小写,然后切换到中途不区分大小写。您要么必须执行字符类操作(上面),要么将其拆分为多个表达式,然后确保第一个表达式的匹配后面紧跟着第二个表达式的匹配。事实上,您可能可以创建一个实用程序函数/对象,它接受一系列正则表达式,并查找彼此相邻的表达式的匹配项,例如:

var matcher = new MyNiftyMatcherThing(/a/, /b/i);
if (matcher.exec(someString)) {
// ...
}
<小时/>

在澄清问题之前先回答:

? (表示“零或一”的量词)必须引用它前面的某些内容,但在捕获组中它前面没有任何内容可供它引用。

你还没有说你在做什么,但如果目标是拥有或不拥有 i之间ab ,并捕获它(如果存在),只需将字符反转即可:

var regex=/a(i?)b/;

如果您的目标是成为 i可选捕获它,您可以将量词与非捕获组结合起来(因此它仅适用于 i ,而不是 a ):

var regex=/a(?:i?)b/;

如果您的目标是拥有一个非捕获组(尽管我不太确定为什么您只需要一个字母 i ),那么您需要一个 : ?之后:

var regex=/a(?:i)b/;

(或者 (?=...) 表示正向前瞻,或 (?!...) 表示负向前瞻。)

关于javascript - JS 中的局部修饰符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24303224/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com