js里 str.replace(/^\s*(.*?)[\s\n]*$/g, '$1') 中$1是什么意思?
$1是正则里的捕获,就是前面百的(.*?)里的东西,str.replace(/^\s*(.*?)[\s\n]*$/g,'$1')就是删除字符前后的空白,后面那知个\n是多余的,因为\s就包含了\n。
符号含义:
\s:space,空格
+:一个或多个
^:开始,^\s,以空格开始
$:结束,\s$,以空格结束
|:或者
/g:global,全局
replace()替换
扩展资料:
1.正则表达式:
(1)定义正则表达式的规则;
正则表达式模式(I/g/m);
2.宣布正则表达式:
(1)文字声明:
Varreg=/表达式规则/表达式模式;
例如:varreg=/white/g;
使用新关键字:
Varreg=newRegExp("expressionrule","expressionmode");
例如:varreg=newRegExp("白色","g");
3.正则表达式的常见模式:
G:全球匹配。没有g默认为非全局匹配,只匹配满足要求的第一个字符串。
我:忽略大小写。没有I,默认情况不匹配;
M:多线匹配模式。没有m,一根弦只有一个开始和一个结束;
对于m,如果字符串被分成多行,每一行都有一个开头和一个结尾。
str.replace(/^\s*(.*?)[\s\n]*$/g, '$1')
就是删除字符前后的空白,后面那个\n是多余的,因为\s就包含了\n
你这个可以优化成:
str.replace(/^\s+(.*?)\s+$/g, '$1')
或者用:
str.replace(/^\s+|\s+$/g, "")
效果是一样的
参考资料: http://beinet.cn/Blog/BlogShow.aspx?id=8fe6311d-ea7b-4e81-9fa1-465b593c82c1