ホームページ > 記事 > ウェブフロントエンド > JavaScript replace() は大文字と小文字を区別しませんか?
JavaScript では、replace() 関数は正規表現を使用して、大文字と小文字を区別せずに文字列を置換できます。構文は「string.replace(/検出される値/gi,"置換値")」です。 ; ここで、「g」はグローバル置換を表し、「i」は大文字と小文字を無視することを表します。
このチュートリアルの動作環境: Windows7 システム、JavaScript バージョン 1.8.5、Dell G3 コンピューター。
JavaScript では、replace() 関数は大文字と小文字を区別せずに文字列を置換できますが、これには正規表現の助けが必要です。
Thereplace() メソッドは、文字列内の一部の文字を他の文字に置き換えたり、正規表現に一致する部分文字列を置き換えたりするために使用されます。
構文:
string.replace(searchvalue,newvalue)
パラメータ | 説明 |
---|---|
searchvalue | は必須です。置換する部分文字列またはパターンを指定する RegExp オブジェクト。 値が文字列の場合、最初に RegExp オブジェクトに変換されるのではなく、リテラル リテラル パターンとして取得されることに注意してください。 |
#新しい値 | 必須。文字列値。テキストを置換する関数、または置換テキストを生成する関数を指定します。
を受け取ることができます。一致したテキストに関連する情報を参照するために使用される特殊文字の接頭辞です。 #replace() メソッドの 2 番目のパラメータの特殊文字
$1, $2, ..., $99 | |
---|---|
$& (ドル記号ハイフン) | |
$' (ドル記号切り替えスキル キー) に一致する部分文字列 | |
$' (ドル記号一重引用符) | |
$$# の右側のテキストと一致します。 | ## は $ 文字列|
## を意味します 示例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 属性同样能够读取到正则表达式中相关匹配文本的信息。其中:
示例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高级教程】 |
以上がJavaScript replace() は大文字と小文字を区別しませんか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。