-2

次のテキストを正規表現を使用して変換し、^text^内部のテキストが一部の HTML タグ内のテキストに置き換えられるようにします。(内側<font color='red'></font>

例:

Input Text: Please select ^Continue^ to proceed with your call or ^Exit^ to call

Output Text: Please select <font color='red'>Continue</font> to proceed with your call or <font color='red'>Exit</font> to call

JavaScriptで正規表現を使用して上記を達成することは可能ですか?

4

3 に答える 3

2
your_string.replace(/\^(.*?)\^/g, "<font color='red'>$1</font>");

例:

> a = "Please select ^Continue^ to proceed with your call or ^Exit^ to call"
"Please select ^Continue^ to proceed with your call or ^Exit^ to call"
> a.replace(/\^(.*?)\^/g, "<font color='red'>$1</font>");
"Please select <font color='red'>Continue</font> to proceed with your call or 
<font color='red'>Exit</font> to call"
于 2013-07-11T09:31:37.187 に答える
2

使用する yourstring.replace(/\^([^\^]*)\^/g,"<font color='red'>$1</font>")

Explanation  -- Starting ^
               ------- Match everything but ^, in $1
                       -- End with ^

gはグローバル フラグで、正規表現がすべての一致に一致することを意味します。

例:

text= "Please select ^Continue^ to proceed with your call or ^Exit^ to call"
result=text.replace(/\^([^\^]*)\^/g,"<font color='red'>$1</font>")
于 2013-07-11T09:34:10.783 に答える
0

おそらく、ある種の解析関数を作成する方が良いでしょう。ケースによって異なりますが、このようなものです。

Javascript

function wrapMarked(string, open, close) {
    if (typeof string !== "string", typeof open !== "string", typeof close !== "string") {
        throw new TypeError("Arguments must be strings.");
    }

    if ((string.match(/\^/g) || []).length % 2 !== 0) {
        throw new Error("We have unmatched '^'s.");
    }

    string = string.replace(/\^{2}/g, "");
    var index = string.indexOf("^"),
        result = "",
        state = true;

    while (index !== -1) {
        result += string.substring(0, index);
        if (state) {
            result += open;
        } else {
            result += close;
        }

        string = string.substring(index + 1);
        index = string.indexOf("^");
        state = !state;
    }

    return result + string;
}

var text = "Please select ^Continue^ to proceed with your call or ^Exit^ to call";

console.log(wrapMarked(text, "<font color='red'>", "</font>"));

jsfiddleについて

于 2013-07-11T11:40:10.767 に答える