早教吧 育儿知识 作业答案 考试题库 百科 知识分享

咨询一下删除字符串的解释str=str.replace(/(&|\?)spm=[^&]*(&|$)/gi,'$1');这短代码我很喜欢想弄清楚str=str.replace(/(&|\?)spm=[^&]*(&|$)/gi,'$1');您好麻烦您在咨询一下这段代码我研究了很久,不知道我解

题目详情
咨询一下删除字符串的解释 str = str.replace(/(&|\?)spm=[^&]*(&|$)/gi,'$1'); 这短代码我很喜欢想弄清楚
str = str.replace(/(&|\?)spm=[^&]*(&|$)/gi,'$1');
您好麻烦您 在咨询一下
这段代码我研究了很久, 不知道我解释的对不对
这短代码(&|\?) 意思是从&何者是?号开始 对吗?
[^&]* 是提取中间的任何字符串(不管什么 符号 字母 大小写 空格 还是中文)对吗?
(&|$) 这断是到&结束 $是代表整个字符串的结尾是吗?
gi, g是所有相同的字符 i是不分大小写
$1是恢复刚才查出的字符串第一个 要是&开头就$1就& 是?开头 就是?
▼优质解答
答案和解析
1. 这短代码(&|\?) 意思是从&何者是?号开始 对吗? 对
2. [^&]* 是提取中间的任何字符串(不管什么 符号 字母 大小写 空格 还是中文)对吗? 是除了&以外的任何字符.
3. (&|$) 这断是到&结束 $是代表整个字符串的结尾是吗? 对,就是匹配到下一个&,如果没有&了就匹配到字符串结尾.
4. gi, g是所有相同的字符 i是不分大小写. g是全局匹配,如果不加g就匹配一个就不再向后匹配了,但对于你的情况,可用可不用,用了也不是错误, i就是你说的,不区分大小写
5. $1是恢复刚才查出的字符串第一个 要是&开头就$1就& 是?开头 就是? 是的,将整个匹配的字符串只留下最初的连接符用于连接,因为匹配是从&开始的又是以&结束的,如果不保留一个,那前后的连接符就丢失了,所以要保留一个,又因为后面可能没有连接符的情况,所以要保留前面的,至少前面不是&就是?,肯定会有一个的.
看了咨询一下删除字符串的解释str...的网友还看了以下: