javascript
  • regex
  • 2016-04-08 1 views 0 likes 
    0

    は私replace()機能JavaScriptの.replace関数を2つの検索値で実行できますか?以下

    SomeString.replace(/\[check\]/, "<input type='checkbox'>"); 
    

    である私の質問は:私は交換する機能で2つの検索値を持つことができますか?

    たとえば、/\[check\]/に一致する場合は<input type='checkbox'>に、一致する場合は\[check111\]に、<input type='radio'>に置き換えます。

    .replace()機能に2つの検索値の両方を書き込むことはできますか?

    答えて

    1

    はい。

    String#replaceにはコールバック機能を使用できます。コールバック内では、三項演算子、またはif...else文を使用して、一致するものと置換するものを確認します。

    someString.replace(/\[check(?:111)?\]/g, function($0) { 
        return "<input type='" + ($0 === '[check]' ? 'checkbox' : 'radio') + "'>"; 
        // $0 here is the complete string match 
    }); 
    

    デモ:

    var someString = 'Hello [check], did you say [check111]?'; 
     
    
     
    var result = someString.replace(/\[check(?:111)?\]/g, function ($0) { 
     
        return "<input type='" + ($0 === '[check]' ? 'checkbox' : 'radio') + "'>"; 
     
    }); 
     
    
     
    console.log(result); 
     
    document.body.innerHTML = result; // FOR DEMO ONLY

    正規表現の説明:

    1. \[check:マッチ[check
    2. (?:111)?:111がゼロまたは1回一致し、それをキャプチャしません。したがって、111はここではオプションです。
    3. \]:マッチ]リテラル
    関連する問題