js正则匹配后如何通过函数对匹配字符进行处理,我匹配出的内容长度不是匹配内容的长度而是$1的长度?

JavaScript09

js正则匹配后如何通过函数对匹配字符进行处理,我匹配出的内容长度不是匹配内容的长度而是$1的长度?,第1张

str=str.replace(/&#([A-Fa-f0-9]{1,8})/g,function(s,s1){return codeS(s1)})

replacement 函数第一个参数是匹配字符串(&#12539),第二个参数是子表达式(12539),第三个参数是匹配位置(5),第四个参数是str本身

$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,如果字符串被分成多行,每一行都有一个开头和一个结尾。