Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/375.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:RegEx-不返回match1 match2等_Javascript_Jquery_Regex - Fatal编程技术网

JavaScript:RegEx-不返回match1 match2等

JavaScript:RegEx-不返回match1 match2等,javascript,jquery,regex,Javascript,Jquery,Regex,我正试图采用此正则表达式满足我的需要: (?:^|\s)(?:https?:\/\/)?(?:\w+(?=\.).)?(?<name>.*).(?<tld>(?<=\.)\w+) 问题是:上面的正则表达式似乎总是返回“valid” 你知道怎么做吗?你有一个分组的正则表达式,因此它将返回match[n],其中n是匹配的组数。如果没有匹配项,则结果将为null: function isUrl(myString) { var match = myString.mat

我正试图采用此正则表达式满足我的需要:

(?:^|\s)(?:https?:\/\/)?(?:\w+(?=\.).)?(?<name>.*).(?<tld>(?<=\.)\w+)
问题是:上面的正则表达式似乎总是返回“valid”


你知道怎么做吗?

你有一个分组的正则表达式,因此它将返回
match[n]
,其中n是匹配的组数。如果没有匹配项,则结果将为null:

function isUrl(myString) {
  var match = myString.match('/(?:^|\s)(?:https?:\/\/)?(?:\w+(?=\.).)?(?<name>.*).(?<tld>(?<=\.)\w+)/');
  if(match !== null) {
    return true;
  }
  return false;
}
函数isUrl(myString){
var match=myString.match('/(?:^\s)(?:https?:\/\/)(?:\w+(?=\))(?*)。(?(?Regex类的
test()
函数应该足以验证输入是否与模式匹配

你可以这样做:

var pattern = /^(http[s]?:\/\/)?(www\.)?([^\.]+)\.[^\.]{2,3}$/
var regex = new RegExp(pattern);

for(var i=1; i<=3; i++) {
    if ( regex.test( $("#text"+i).text() ) )
      $("#isMatch"+i).html("MATCHES");
  else
    $("#isMatch"+i).html("DOESN'T MATCH");
}
var模式=/^(http[s]?:\/\/)?(www\.)?([^\.]+)\.[^\.]{2,3}$/
var regex=新的RegExp(模式);

对于(var i=1;i您如何使用它?什么语言?如果正则表达式工作正常,那么问题在于如何使用它。您好。我在JS(jQuery)中使用它。如果正则表达式返回true,我将触发其他函数。给定的正则表达式似乎总是true,因为函数总是被触发的…我添加了我的初始问题以更好地解释…它返回多少个匹配项为什么重要?如果它返回任何匹配项,则它匹配,否则它不匹配。您使用的是
()
它将捕获数据,因此会有多个匹配项。
var pattern = /^(http[s]?:\/\/)?(www\.)?([^\.]+)\.[^\.]{2,3}$/
var regex = new RegExp(pattern);

for(var i=1; i<=3; i++) {
    if ( regex.test( $("#text"+i).text() ) )
      $("#isMatch"+i).html("MATCHES");
  else
    $("#isMatch"+i).html("DOESN'T MATCH");
}