获取方法
getUrlRequest: function (name) {
var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)"), // 构造一个含有目标参数的正则表达式对象
r = decodeURIComponent(window.location.search).substr(1).match(reg); // 匹配目标参数
// 返回参数值
if (r != null) {
return decodeURIComponent(r[2]);
// return unescape(r[2]);
}
return null;
}
字符串编码
escape()
- 已经废弃的编码函数 不建议再使用
函数是全局对象的属性. 特色字符如: @*_+-./ 被排除在外.使用escape()
函数解码。unescape()
2.
encodeURI(URI)
-
一般用于编码整个URI 使用decodeURI()解码 需要注意下面的字符不会被编码|
类型 包含 保留字符 ;
,
/
?
:
@
&
=
+
$
非转义的字符 字母 数字 -
_
.
!
~
*
'
(
)
数字符号 #
-
注意 如果URL需要遵循较新的
RFC3986
标准,那么方括号是被保留的(给IPv6),因此对于那些没有被编码的URL部分(例如主机),可以使用下面的代码function fixedEncodeURI (str) { return encodeURI(str).replace(/%5B/g, '[').replace(/%5D/g, ']'); }
encodeURIComponent()
-
用于编码URI组成部分 使用
decodeURIComponent()
解码
decodeURIComponent()
转义除了 字母 数字(
)
.
!
~
*
'
-
_
之外的所有字符 -
对于
application/x-www-form-urlencoded (POST)
这种数据方式,空格需要被替换成 '+',所以通常使用encodeURIComponent
的时候还会把 "%20" 替换为 "+"
为了更严格的遵循RFC 3986
(它保留 !, ', (, ), 和 *),即使这些字符并没有正式划定 URI 的用途,下面这种方式是比较安全的:function fixedEncodeURIComponent (str) { return encodeURIComponent(str).replace(/[!'()*]/g, function(c) { return '%' + c.charCodeAt(0).toString(16); }); }
正则分组
1.
(^|&)" + name + "=([^&]*)(&|$)")
- 匹配
name=xx
&name=xx
&name=xx&
[^abc]
取非 即不是abc的任意字符
match方法
- 检索字符串
strObject
以找到一个或多个与正则匹配的文本 - 如果正则没有
g
则match()
方法只能执行一次匹配,如果没有找到任何匹配项返回null
- 如果匹配到了 则返回一个数组,数组第0个元素是匹配到的文本。其余的元素存放的是与正则表达式的子表达式配匹配的文本。即第1个元素是
(^|&)
第2个元素是([^&]*)
第三个元素是(&|$)
- 除了上面的元素还包含一个
index
项标识匹配文本的起始字符在stringObject
的中的下标。input
就是stringObject
- 以上是没有
g
的规则 当正则有g
则match()
返回的是匹配的文本 不会返回正则子表达式的内容 且没有index input 元素。