JavaScriptで、合成除外以外の文字に対してUnicode正規化を行う処理を書こうと考えています。
その際、正規表現で「合成除外の文字以外の文字列」にマッチする正規表現をどのように記述すれば良いか分からなくなったため、質問させて頂きます。
まず、合成除外の文字にマッチする正規表現は以下になります。
(こちらのパターンをmathiasbynens/regenerateというライブラリを用いて生成したものです)
JavaScript
1/[\u0340\u0341\u0343\u0344\u0374\u037E\u0387\u0958-\u095F\u09DC\u09DD\u09DF\u0A33\u0A36\u0A59-\u0A5B\u0A5E\u0B5C\u0B5D\u0F43\u0F4D\u0F52\u0F57\u0F5C\u0F69\u0F73\u0F75\u0F76\u0F78\u0F81\u0F93\u0F9D\u0FA2\u0FA7\u0FAC\u0FB9\u1F71\u1F73\u1F75\u1F77\u1F79\u1F7B\u1F7D\u1FBB\u1FBE\u1FC9\u1FCB\u1FD3\u1FDB\u1FE3\u1FEB\u1FEE\u1FEF\u1FF9\u1FFB\u1FFD\u2000\u2001\u2126\u212A\u212B\u2329\u232A\u2ADC\uF900-\uFA0D\uFA10\uFA12\uFA15-\uFA1E\uFA20\uFA22\uFA25\uFA26\uFA2A-\uFA6D\uFA70-\uFAD9\uFB1D\uFB1F\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFB4E]|\uD834[\uDD5E-\uDD64\uDDBB-\uDDC0]|\uD87E[\uDC00-\uDE1D]/
しかし、このパターンはあまりにも長いので、以降は以下のパターンを「合成除外の文字にマッチする正規表現」とします。
(なお、このパターンは文字集合に含まれる文字を変更しただけで、本来のパターンと構造は変わりません)
JavaScript
1/[a-z]|@[A-H]|#[1-9]/
そして、「合成除外の文字のみで構成された文字列」に対して置換処理を行う場合、以下の様なコードになります。
JavaScript
1str.replace(/([a-z]|@[A-H]|#[1-9])+/g, function(match){ 2 // 何かの処理 3 // 変数matchには「合成除外の文字のみで構成された文字列」が含まれている 4});
さて、この逆である、「合成除外以外の文字のみで構成された文字列」に対して置換処理を行う場合、どのような正規表現を書けば良いでしょうか?
JavaScript
1str.replace( ... , function(match){ 2 // 何かの処理 3 // 変数matchには「合成除外以外の文字のみで構成された文字列」が含まれている 4});
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/11/28 15:10
2015/11/28 15:18
2015/11/28 19:30