2017-09-14 6 views
0

複数の区切り文字を持つ文字列に複数のメールがあります,;:/|\""nodejsでregexを使用して複数の区切り文字をフィルタリングする

私はスリップして配列に追加しようとしています。

ほぼほとんど問題はありません。 私の正規表現に何か間違いがあります。

ノードJSコード:ここ

var x = "mmmm lll\"kkkk\jjj/iiii,hhhh:gggg+ffff-eee+dddd;cccc|bbbb:aaaa"; 

    var separators = [' ', '\\\+', '-', ';', '"', '\\|','//', '\\|', '\\\(', '\\\)', '\\*', '/', ':', '\\\?']; 
    console.log(separators.join('|')); 
    var tokens = x.split(new RegExp(separators.join('|'), 'g')); 
    console.log(tokens); 

が出力されます。

|\+|-|;|"|\||//|\||\(|\)|\*|/|:|\? 
[ '[email protected]', 
    '[email protected]', 

'KKKK @ gmail.comjjj @ gmail.com' を、 「IIII @ gmail.com、HHHH @ gmail.com '、

'[email protected]', 
    '[email protected]', 
    '[email protected]', 
    '[email protected]', 
    '[email protected]', 
    '[email protected]', 
    '[email protected]' ] 

答えて

0

[1]セパレータのリストに,を追加できます。

あなたは文字列xを宣言している場合、[2]、それはあなたがxを表示する場合は、\区切り文字なしでそれを見ることができますので、それは、\後に来るものをエスケープする必要があることを前提としています。区切り文字を\\に変更してください。

[3] \の区切り文字も追加します。 nodejsで働い

新しい更新されたコード:GGGG + FFFF-EEE +:あなたの迅速な応答を

var x = "mmmm lll\"kkkk\\jjj/iiii,hhhh:gggg+ffff-eee+dddd;cccc|bbbb:aaaa"; 
\\      ^^^ <- Note this, otherwise it's trying to escape `j` 
console.log(x) 
var separators = [' ', '\\\+', '-', ';', '"', '\\|','//', '\\|', '\\\(', '\\\)', '\\*', '/', ':', '\\\?', ',', '\\\\\+']; 

console.log(separators.join('|')); 
var tokens = x.split(new RegExp(separators.join('|'), 'g')); 
console.log(tokens); 
+0

感謝..私は( "MMMM LLL \" KKKK \\ JJJ/IIII、HHHH文字列を変更することはできませんdddd; cccc | bbbb:aaaa)これは私の手にはない... thatsなぜ私は正規表現のコードで何かをする必要があります... –

+0

問題は、jsは文字列にあるとは考えていません。 'x.indexOf( '\\')' – TheChetan

+0

を参照してください。https://stackoverflow.com/a/3903661/4110233を参照してください.JS内の特殊文字であるため、1つではなくすべての場所に\\が必要です。 – TheChetan

関連する問題