web-dev-qa-db-ja.com

Javascript分割正規表現の質問

こんにちは、私はJavascriptではかなり簡単な正規表現だと思っていたものを試していますが、多くの問題を抱えています。 '-'、 '。'、 '/'および ''のいずれかによるJavaScript分割を介して日付を分割する機能が必要です。

var date = "02-25-2010";
var myregexp2 = new RegExp("-."); 
dateArray = date.split(myregexp2);

このすべてのヘルプの正しい正規表現は何ですか?.

96
Craig

分割したい文字を 文字クラス に入れる必要があります。これは、正規表現エンジンに「これらの文字のいずれかが一致する」ことを伝えます。あなたの目的のために、これは次のようになります。

date.split(/[.,\/ -]/)

ダッシュは、範囲指定子として文字クラスで特別な意味を持ちますが(つまり、[a-z][abcdefghijklmnopqrstuvwxyz]と同じ意味です)、クラスの最後に置くと、リテラルダッシュを意味し、エスケープする必要はありません。

パターンが機能しなかった理由を説明するために、/-./は、正規のダッシュ文字とそれに続く任意の文字を一致させるよう正規表現エンジンに指示します( dots は正規表現のワイルドカード文字です)。 「2010年2月25日」では、ダッシュが「2」に一致し、ドットが「2」に一致するため、「-2」が検出されるたびに分割されます。

149

または単に(数字以外):

date.split(/\D/);
8
Jo3y

あなたはただ使うことができます

date.split(/-/);

または

date.split('-');
6
Allan Ruin

次に、数字以外で分割します。

date.split(/[^0-9]/);
4
useless

あなたの文字列は次のとおりです:

let str = `Word1
Word2;Word3,Word4,Word5;Word7
Word8,Word9;Word10`;

次の区切り文字で文字列を分割します。

  • 結腸
  • セミコロン
  • 改行

次のように文字列を分割できます。

let rawElements = str.split(new RegExp('[,;\n]', 'g'));

最後に、配列内の要素をトリミングする必要がある場合があります。

let elements = rawElements.map(element => element.trim());
2
Bobzius

または単に日付文字列2015-05-20または2015.05.20に使用します

date.split(/\.|-/);
0