JavaScript에서 교체() 함수는 정규식을 사용하여 대소문자를 구분하지 않고 문자열을 바꿀 수 있습니다. 구문은 "string.replace(/value to befound/gi,"replacement value")"입니다. "는 전역 교체를 나타내고, "i"는 대소문자 무시를 나타냅니다.
이 튜토리얼의 운영 환경: Windows 7 시스템, JavaScript 버전 1.8.5, Dell G3 컴퓨터.
JavaScript에서 교체() 함수는 대소문자를 구분하지 않고 문자열을 바꿀 수 있으며, 이를 위해서는 정규 표현식의 도움이 필요합니다.
replace() 메서드는 문자열의 일부 문자를 다른 문자로 바꾸거나 정규식과 일치하는 하위 문자열을 바꾸는 데 사용됩니다.
구문:
string.replace(searchvalue,newvalue)
Parameters | Description |
---|---|
searchvalue | 필수입니다. 대체할 하위 문자열이나 패턴을 지정하는 RegExp 개체입니다. 값이 문자열인 경우 먼저 RegExp 개체로 변환되지 않고 리터럴 텍스트 패턴으로 검색됩니다. |
newvalue | 필수입니다. 문자열 값. 텍스트를 바꾸거나 대체 텍스트를 생성하는 기능을 지정합니다. |
반환 값: 정규 표현식의 첫 번째 일치 항목 또는 모든 일치 항목을 대체 항목으로 대체하여 얻은 새 문자열입니다.
replace() 메소드의 두 번째 매개변수는 함수를 사용할 수 있습니다. 이 함수는 일치 시 호출됩니다. 동시에 함수는 접두사가 붙은 특수 문자를 받을 수 있습니다. $
를 사용하여 일치하는 관련 정보를 인용하세요.
규칙 문자열 | Description |
---|---|
$1, $2, ..., $99 | 및 정규 표현식의 1~99번째 자식 표현식 | 과 일치하는 텍스트
$&(달러 기호 + 하이픈) | 정규 표현식과 일치하는 하위 문자열 |
$'(달러 기호 + 토글 스킬 키) | 는 일치하는 하위 문자열에 위치합니다. 텍스트의 왼쪽에 있는 텍스트 string |
$'(달러 기호 + 작은따옴표) | 일치하는 문자열 |
$$ | 오른쪽에 있는 텍스트는 $ 문자열 |
示例1
将字符串中的字符 a(不区分大小写) 替换为 x
<p> 将字符串中的字符 a(不区分大小写) 替换为 x </p> <p id="demo"></p> <script> var sText = "abcdefaABC"; //g 代表全局替换 i 代表 忽略大小写 var txt = sText.replace( /a/gi , 'x'); document.getElementById("demo").innerHTML = txt; </script>
输出结果:
示例2
下面代码把字符串中每个单词转换为首字母大写形式显示。
var s = 'javascript is script , is not java.'; //定义字符串 //定义替换文本函数,参数为第一个子表达式匹配文本 var f = function ($1) { //把匹配文本的首字母转换为大写 return $1.substring(0,1).toUpperCase() + $1.substring(1).toLowerCase();} var a = s.replace(/(\b\w+\b)/g, f); //匹配文本并进行替换 console.log(a); //返回字符串“JavaScript Is Script , Is Not Java.”
在上面示例中替换函数的参数为特殊字符“$1”,它表示正则表达式 /(\b\w+\b)/ 中小括号匹配的文本,然后在函数结构内对这个匹配文本进行处理,截取其首字母并转换为大写形式,余下字符全为小写,然后返回新处理的字符串。replace() 方法是在原文本中使用这个返回的新字符串替换掉每次匹配的子字符串。
示例3
对于上面的示例还可以进一步延伸,使用小括号来获取更多匹配信息。例如,直接利用小括号传递单词的首字母,然后进行大小写转换处理,处理结果都是一样的。
var s = 'javascript is script , is not java.'; //定义字符串 var f = function ($1,$2,$3) { //定义替换文本函数,请注意参数的变化 return $2.toUpperCase() + $3; } var a = s.replace(/(\b\w+\b)/g, f); console.log(a);
在函数 f() 中,第一个参数表示每次匹配的文本,第二个参数表示第一个小括号的子表达式所匹配的文本,即单词的首字母,第二个参数表示第二个小括号的子表达式所匹配的文本。
replace() 方法的第二个参数是一个函数,replace() 方法会给它传递多个实参,这些实参都包含一定的意思,具体说明如下:
第一个参数表示与匹配模式相匹配的文本,如上面示例中每次匹配的单词字符串。
其后的参数是与匹配模式中子表达式相匹配的字符串,参数个数不限,根据子表达式数而定。
后面的参数是一个整数,表示匹配文本在字符串中的下标位置。
最后一个参数表示字符串自身。
示例4
把上面示例中替换文本函数改为如下形式。
var f = function() { return arguments[1].toUpperCase() + arguments[2]; }
也就是说,如果不为函数传递形参,直接调用函数的 arguments 属性同样能够读取到正则表达式中相关匹配文本的信息。其中:
arguments[0]:表示每次匹配的文本,即单词。
arguments[1]:表示第一个子表达式匹配的文本,即单词的首个字母。
arguments[2]:表示第二个子表达式匹配的文本,即单词的余下字母。
arguments[3]:表示匹配文本的下标位置,如第一个匹配单词“javascript”的下标位置就是0,以此类推。
arguments[4]:表示要执行匹配的字符串,这里表示“javascript is script , is not java.”。
示例5
下面代码利用函数的 arguments 对象主动获取 replace() 方法的第一个参数中正则表达式所匹配的详细信息。
var s = 'javascript is script , is not java.'; //定义字符串 var f = function () { for (var i = 0; i < arguments.length; i++) { console.log("第" + (i + 1) + "个参数的值:"+ arguments[i]); } console.log("-----------------------------"); } var a = s.replace(/(\b\w+\b)/g, f);
在函数结构体中,使用 for 循环结构遍历 arguments 属性时,发现每次匹配单词时,都会弹出 5 次提示信息,分别显示上面所列的匹配文本信息。其中,arguments[1]、arguments[2] 会根据每次匹配文本的不同,分别显示当前匹配文本中子表达式匹配的信息,arguments[3] 显示当前匹配单词的下标位置。而 arguments[0] 总是显示每次匹配的单词,arguments[4] 总是显示被操作的字符串。
【推荐学习:javascript高级教程】
위 내용은 자바스크립트 교체()는 대소문자를 구분하지 않나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!