Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/468.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 匹配文档中的项目_Javascript_Regex_String - Fatal编程技术网

Javascript 匹配文档中的项目

Javascript 匹配文档中的项目,javascript,regex,string,Javascript,Regex,String,我试图在方括号中匹配以下项目: [O!BOM031][O!BOM016][O!BOM037] 我丑陋的正则表达式是这样的: [A-Z!\d\[\]]+ 它似乎起作用了。然而,我不知道的是,当这些项目在文档中时,如何与它们周围的其他文本相匹配 例如: Rogue's Best Friend [O!BOM030] This wide belt...(text) Little Friend Locket [O!BOM031]...(text) 我发现了一些有效的方法,但我知道这是完全错误的:

我试图在方括号中匹配以下项目:

[O!BOM031][O!BOM016][O!BOM037]
我丑陋的正则表达式是这样的:

[A-Z!\d\[\]]+
它似乎起作用了。然而,我不知道的是,当这些项目在文档中时,如何与它们周围的其他文本相匹配

例如:

Rogue's Best Friend [O!BOM030] This wide belt...(text) 
Little Friend Locket [O!BOM031]...(text)
我发现了一些有效的方法,但我知道这是完全错误的:

([A-Z!\d\[])+\d]
由于某些原因,我只能在这行中匹配:
[O!BOM031][O!BOM016][O!BOM037]
。如何指定我只希望匹配正则表达式中的这些项而不匹配文档中的其他项?

这应该可以:

\[[A-Z]!BOM\d{3}\]
说明:

\[    // matches [ literally
[A-Z] // matches an uppercase letter
!BOM  // matches !BOM literally
\d{3} // match 3 sequential digits
\]    // matches ] literally

它确实有效。所以[and]with\包含了一个表达式(意思是,外部的所有内容都被忽略)?这两个怎么样;^$。这难道不意味着“regex的开始”/“regex的结束”(就像“字面意义上的”)吗?或者它可能完全不同?
[
]
`是文字。方括号是正则表达式中的字符集。这意味着无论你在他们有什么是正则表达式将寻找。例如,
[asdf]`将匹配
a
s
d
f
中的任何一个。还有一个否定集
[^asdf]
,这意味着要匹配集合中指定的内容以外的任何内容
^
本身表示字符串的开头,
$
表示字符串的结尾。
^
$
的含义可以根据您指定的标志而更改。我假设这是JavaScript。在JS中,如果指定
m
多行标志,则
^
$
按行而不是按字符串匹配。希望有帮助。啊,评论删除了我的\。我在
[
]
之前使用\是因为我们希望按照字面意思匹配这些字符。这称为转义字符。我们这样做的原因是因为这些字符在正则表达式中有特殊的含义。是的,我刚刚读到了一些类似的东西,直到现在我还没有理解(多亏了你),这证实了你的理论:“你必须用反斜杠转义元字符,以防止它们被解释”。这对我来说是新的。谢谢你的解释。