编码新手。我不了解[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]?
感谢您的帮助。
答案 0 :(得分:0)
匹配指的是第二行语句:
match = requestedURL.match(wikipediaDontRedirectRegExp);
这是使用match函数创建也称为match的变量。 match函数的返回值是一个数组,因此接下来的两行将从该数组中获取前两个值,并将它们设置为lang
和page
。
有关.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>