1

文字列!(前後のスペース) と 1 つの char ごとに文字列を分割する必要があり|ます。

function split (str) {
    return str.split (/\s!\s/)
}

result = split ("hello world ! hello | world! hi ");
console.log (result); // result must be: ["hello world", "hello", "world! hi "]

私はそれを行う方法を理解できません。今私がしたことは、 だけで分割してい!ます。Plus charは、正規表現を|意味するため、スクリーニングする必要があります。OR

4

4 に答える 4

4

次のようなものが必要なようです。

function split (str) {
    return str.split (/\s[!|]\s/)
}

これにより、空白文字で囲まれた!またはのいずれかで文字列が分割されます。|

ここで動作することがわかります。

しかし、一般に、a (または任意の特殊文字) をリテラルとして使用したい場合は、次のようにバックスラッシュ ( )|を使用してエスケープできます。\

/\s!\s|\s\|\s/
于 2013-09-23T04:59:25.943 に答える
1

または正規表現では|

そのため、前後にスペースがある場合|

function split (str) {
    return str.split(/\s!\s|\s\|\s/);
}

そうしないと:

function split (str) {
    return str.split(/\s!\s|\|/);
}
于 2013-09-23T05:06:40.887 に答える
1

この場合、pswg が示すように、文字クラスを使用してそれを行うことができます (また行う必要があります) 。

しかし、一般的な質問への答えは

2 つの正規表現で文字列を分割する方法

...「代替」を使用することです:

str.split(/first expression|second expression/);

例えば:

str.split(/foo|bar/);

foo...またはで分割されbarます。

この場合、次のようになります。

str.split(/\s(?:!|\|)\s/);

(交互に何があったかを制御するために、交互を非キャプチャ グループに入れました。)

ただし、(2 つの異なる式ではなく) 2 つの文字のみの場合は、文字クラスを使用する方が適切です。

str.split(/\s[!|]\s/);
于 2013-09-23T05:01:07.613 に答える
1

パイプ演算子を使用して両方を含めることができます: この正規表現を使用してください/ ! | \| /

于 2013-09-23T05:00:53.797 に答える