1

次のような文字列で、一致するJavascriptの正規表現を探しています

@Mr. Smith Hello !

、ここで Mr. Smith はユーザーの名前です。

Mr. Mr. Smith Mr. Smith Hello Mr. Smith Hello !

今のところ、試したすべての正規表現が返されました

@Mr. Smith Hello !そしてMr. Smith Hello !

無視しながらMr.Mr. SmithそしてMr. Smith Hello...

私はこれを試しました:

/^@(.*) //^@(.*)* /および/^@([^ ].*) /

ご協力いただきありがとうございます !

4

1 に答える 1

3

各一致は入力テキストの一部を消費するため、1 つの正規表現で重複テキストを個別の一致として返すことはできません。ただし、次のようにネストされたキャプチャ グループを作成できます (デモ: http://www.rubular.com/r/bsu52a1eL9 ):

@(((([^ ]*) [^ ]*) [^ ]*) [^ ]*)

もちろん、これは指定した正確な文字列形式でのみ機能し、正確に 3 つのスペース / 4 つの個別の単語があります。より良い解決策は、 メソッドsubstringsplitメソッドを使用することです。その後、パーツを手動で再結合できます。

var input = "@Mr. Smith Hello !";
var parts = input.substring(1).split(' ');
//parts = ["Mr.","Smith","Hello","!"]
var temp = "";
var output = [];

for (var i = 0; i < parts.length; i++)
{
    if (temp != "") temp += " ";
    temp += parts[i];
    output[i] = temp;
}
//output = ["Mr.", "Mr. Smith", "Mr. Smith Hello", "Mr. Smith Hello !"]

デモ: http://jsfiddle.net/jbk4h/

于 2012-04-26T18:01:05.590 に答える