JavaScript:了解[match]原理

时间:2019-03-08 17:50:35

标签: javascript safari-extension

编码新手。我不了解[match]的原理。 我的意思是

$.ajax({
     url: url,
     data: {'purse' : purse},
     type : "POST"
});

在这段代码上,我不明白match [1]或match [2]是指什么。 例如,

  

“ ^ https?://://([a-zA-Z0-9 \ -_] +)\。(?:m \。)?wikipedia \。(?:com | org)/ wiki /(。 *)(?:\?oldformat = true | \?previous = yes)“,   “我”

什么是match [1],什么是match [2]?

感谢您的帮助。

3 个答案:

答案 0 :(得分:0)

匹配指的是第二行语句: match = requestedURL.match(wikipediaDontRedirectRegExp);

这是使用match函数创建也称为match的变量。 match函数的返回值是一个数组,因此接下来的两行将从该数组中获取前两个值,并将它们设置为langpage

有关.match()函数的更多详细信息,可以在这里找到:https://www.w3schools.com/jsref/jsref_match.asp

答案 1 :(得分:0)

在您的情况下,您具有表达式

^https?://([a-zA-Z0-9\\-_]+)\\.(?:m\\.)?wikipedia\\.(?:com|org)/wiki/(.*)(?:\\?oldformat=true|\\?previous=yes)

表达式正在查找没有取消的类似([a-zA-Z0-9 \ -__] +)(。*)的组,它前面的引号,例如(?: blabla)

匹配是您从代码中的正则表达式获得的结果。对于每次匹配,从数组1到数组大小的元素都是这些组。


例如,如果我们尝试查找在字符对和字符对之间有'u'的字符对,则使用下面的代码。

例如:Th e qu ick将返回["e qu", "e", "q"]

var paragraph = 'The quick brown fox jumps over the lazy dog. It barked.';
var regex = /(\w) (\w)u/;
var found = paragraph.match(regex);

console.log(found);
// Would return Array ["e qu", "e", "q"]

Array ["e qu", "e", "q"]

第一个元素是整体匹配项,另两个元素found [1]和found [2]是我提到的组(方括号)。

答案 2 :(得分:0)

好的,让我看看我是否可以为您对这个正则表达式进行细分。我距离使用RegEx的专家还很远,但是我敢肯定,这个网站上有很多人可以指出我的缺点。

表达: ^https?://([a-zA-Z0-9\\-_]+)\\.(?:m\\.)?wikipedia\\.(?:com|org)/wiki/(.*)(?:\\?oldformat=true|\\?previous=yes)

^字符实际上是检查它是换行还是输入的开头

http匹配项中应该有这个

s?匹配项在此部分可以有一个可选的“ s”

://匹配项中应该有这个

(开始制作要保存的组,以便以后参考

[a-zA-Z0-9\\-_]与大多数字母,数字和特殊字符匹配

+先前定义的组应包含一个或多个字符

)结束组标记

\\.转义符需要在比赛中包含.字符

(?:创建组,但没有保存该组供以后参考

m\\.匹配项应为“ m”。在里面

)结束组标记

?进行的上一组是可选的

wikipedia\\.匹配项应包含“维基百科”。在里面

(?:创建组,但没有保存该组供以后参考

com|org匹配“ com”或“ org”,它们是可互换的

)结束组标记

/wiki/匹配项中应包含“ / wiki /”

(创建一个组,以供以后参考

.匹配字母,数字或特殊字符

*的上一个标记包含零个或多个字符

)结束组标记

(?:创建群组,但不保存

\\?包含“?”匹配,这意味着将检查URL上的查询

\\?oldformat=true|\\?previous=yes检查是否附加了“?oldformat = true”或“?previous = yes”查询

)结束组标记

我认为是总结一下。如果您还有其他疑问,请随时发表评论。但要点是,match [1]将抢占([a-zA-Z0-9\\-_]+)组,而match [2]将抢夺(.*)目录部分之后的/wiki/组。 / p>