学习正则表达式和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])
应该输出一个空对话框,稍后将详细介绍