Javascript分割正規表現質問


116

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

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

これに対する正しい正規表現は何ですか、そしてすべての助けは素晴らしいでしょう。

回答:


174

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

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

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

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


3
また、ドット文字クラスの内部では特別な意味を持たないことも言えるでしょう。ワイルドカード文字として機能するのではなく(意味がありません)、ドットリテラルとして機能します。
ボビージャック

11

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

date.split(/\D/);

6

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

date.split(/-/);

または

date.split('-');

1
コードの前に改行を入れれば、4つのスペースで適切にフォーマットされます。
ブランドン


3

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

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());


-1

代わりにこれを試してください

date.split(/ \ W + /)


これが以前に投稿された5歳以上の回答よりも優れている理由を説明できますか?そしてそれは実際にどのように機能しますか?
mjuarez

これは実際、私にとってすべての答えの中で最もうまくいきました。
reectrix
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.