1

JavaScript正規表現標準は、検索/置換を行うときにケースを強制することをサポートしていますか?

私は一般的に、正規表現の置換部分でキャプチャグループのケースを強制するための\uなどのオプションを知っています。しかし、JavaScript正規表現でこれを行う方法を理解することはできません。 私はJavaScriptコード自体にアクセスできませんが、使用しているプログラムでは、正規表現エンジン自体に渡される正規表現文字列を入力できます。

4

3 に答える 3

1

私があなたを正しく理解していれば、いいえ。

正規表現パターン内から (一致を大文字に変換するために) JavaScript を評価することはできません。

大文字に変換するための str.replace() のみを認識しています。

于 2009-12-10T06:35:13.907 に答える
1

文字列の一致は正規表現を使用して行われます。ただし、文字列の置換は、対象の文字列のどの部分を置き換えるか (正規表現の一致によって供給される) のみを考慮し、与えられた内容に基づいて直接文字列を置換するだけです。 :

var subject = "This is a subject string";

// fails, case-sensitive match by default
subject.replace(/this/, "That"); 

// succeeds, case-insensitive expression using /i modifier, replaces the word "This" with the word "That"
subject.replace(/this/i, "That"); 

ここで、一致した文字列の一部をキャプチャし、それを使用して大文字と小文字を変更したい場合は、式グループ (式の括弧) を使用してそれを行うこともできます。

var subject = "This is a subject string";
var matches = subject.match(/(subject) string/i);
if (matches.length > 0)
{
    // matches[0] is the entire match, or "subject string"
    // matches[1] is the first group match, or "subject"
    subject.replace(matches[1], matches[1].toUpperCase());
    // subject now reads "This is a SUBJECT string"
}

要するに、必要に応じて、大文字と小文字の区別を処理できる一致を実行します。置換を行うのは、置換に使用する直接文字列を指定するのと同じくらい簡単です。

于 2009-12-10T06:44:30.430 に答える
0

/iJavaScript の正規表現はデフォルトで大文字と小文字が区別され、フラグが渡された場合は大文字と小文字を区別しません。

于 2009-12-10T06:25:20.600 に答える