Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.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
学习正则表达式和jquery-什么是.match返回?_Jquery_Regex - Fatal编程技术网

学习正则表达式和jquery-什么是.match返回?

学习正则表达式和jquery-什么是.match返回?,jquery,regex,Jquery,Regex,alert($(this)[0])返回一个url,例如 我希望将“12”和“aaa”放在单独的VAR中(引用的VAL可以是任何东西,但总是一个数字后跟三个alpha) 使用正则表达式在正则表达式编辑器中返回id=12aaa,但是 这不会生成警报()框-根本不会发生任何情况: x = $(this)[0].match(/\?*/); alert(x); 这也不起任何作用: x = $(this)[0].match(/\?*/); alert(x[0]); 正则表达式/\?*/匹配零个或多个问

alert($(this)[0])返回一个url,例如

我希望将“12”和“aaa”放在单独的VAR中(引用的VAL可以是任何东西,但总是一个数字后跟三个alpha)

使用正则表达式在正则表达式编辑器中返回id=12aaa,但是

这不会生成警报()框-根本不会发生任何情况:

x = $(this)[0].match(/\?*/);
alert(x);
这也不起任何作用:

x = $(this)[0].match(/\?*/);
alert(x[0]); 

正则表达式
/\?*/
匹配零个或多个问号。这对于URL开头的空字符串是正确的,因此正则表达式引擎返回一个空字符串。显然不是你想的那样


您可以使用
/[^?]*$/
匹配字符串中最后一个
后面的内容(如果没有
则匹配整个字符串)。

正则表达式
/\?*/
匹配零个或多个问号。这对于URL开头的空字符串是正确的,因此正则表达式引擎返回一个空字符串。显然不是你想的那样


您可以使用
/[^?]*$/
匹配字符串中最后一个
后面的内容(或者如果没有
则匹配整个字符串)。

您在找类似的内容吗

var hash = window.location.hash;
alert(hash);

你在找这样的东西吗

var hash = window.location.hash;
alert(hash);
因为空警报(作为alert())在Firefox中根本不显示警报。 您还应该考虑使用document.location.search来访问参数,而不是使用这个奇怪的$(this)[0]

,因为空警报(作为警报())在Firefox中根本不显示警报。 您还应该考虑使用document.location.search来访问您的参数,而不是使用这个奇怪的$(this)[0]

尝试以下方法:

var x = $(this)[0].match(/[^\?]*$/);
alert(x[0]);
假装$(this)[0]返回“/my/fun/path?query1=a&query2=b 请注意,
x
将是数组
[“query1=a&query2=b”]

例如,如果希望将每个查询参数作为数组中的索引获取,可以执行以下操作:

var params = $(this)[0].match(/[^\?]*$/)[0].split('&');
这将给你:

["query1=a", "query2=b"]
编辑以为您分解正则表达式:

  • []
    是一个字符类,无论有多少内容,它都只能匹配一个字符
  • 例如,
    [a-z]
    将匹配任何单个小写字母
  • 字符类开头的
    ^
    (插入符号)不是标识符。表示此字符类具有相反的效果-它将匹配与其余内容不匹配的任何单个字符。此位置(字符类中的第一个字符)是插入符号表示“not”的唯一时间。在其他上下文中,它具有不同的含义(例如,在正则表达式的开头,
    ^
    将指示字符串的开头必须从那里开始)
  • 因此,我们的字符类
    [^\?]
    表示我们将匹配不是问号的任何单个字符
  • 星号总是表示“前面语句的零次或多次”,因此,当您试图用*表示“这里的任何事情”时,您实际上是在复制\?零次或多次-向解释器声明“我想要一个问号零次或多次”。您的
    警报(x[0])
    应该输出一个空对话框,稍后会有更多内容
  • 在我们的例子中,星号检查任何非问号,零次或多次
  • reg ex末尾的
    $
    表示“字符串结束”,这意味着…当然,字符串的结尾必须在该点
因此,我们知道正则表达式不会从url中收集问号,因为这样它就无法在收集多个非问号的同时到达字符串的末尾。
*
总是贪婪的,除非另有规定,因此它将获得尽可能多的字符

您的警报(x[0])应该输出一个空警报(我测试了它,它为我做了),因为.match()方法首先匹配它能匹配的东西,因为
/\?*/
几乎匹配了所有可能的字符串,它必须在看到第一个字符并说“哦,这里有匹配项!”!"

希望这有助于您的理解:)正则表达式一开始可能会让人困惑,但我绝对喜欢它们。非常强大。

试试这个:

var x = $(this)[0].match(/[^\?]*$/);
alert(x[0]);
假装$(this)[0]返回“/my/fun/path?query1=a&query2=b 请注意,
x
将是数组
[“query1=a&query2=b”]

例如,如果希望将每个查询参数作为数组中的索引获取,可以执行以下操作:

var params = $(this)[0].match(/[^\?]*$/)[0].split('&');
这将给你:

["query1=a", "query2=b"]
编辑以为您分解正则表达式:

  • []
    是一个字符类,无论有多少内容,它都只能匹配一个字符
  • 例如,
    [a-z]
    将匹配任何单个小写字母
  • 字符类开头的
    ^
    (插入符号)不是标识符。指示此字符类具有相反的效果-它将匹配与其余内容不匹配的任何单个字符。此位置(字符类中的第一个字符)是插入符号指示“否”的唯一时间。在其他上下文中,它有不同的含义(例如,在正则表达式的开头,
    ^
    将指示字符串的开头必须从这里开始)
  • 因此,我们的字符类
    [^\?]
    表示我们将匹配不是问号的任何单个字符
  • 星号总是表示“前面语句的零个或多个”,所以当你试图用*表示“这里的任何东西”时,你实际上是在复制\?零次或多次-对口译员说“我想要一个问号零次或多次”。您的
    警报(x[0])
    应该输出一个空对话框,稍后将详细介绍