2017-12-08 17 views
0

JSの正規表現を使用して、選択肢からランダムな特殊文字(たとえば、?、!、*、$)を返そうとしています。JS正規表現のランダムな特殊文字

は、私は、次のコードを使用してランダム -Special文字を生成することができるよ:

Math.random().toString(36).replace(/[^a-z]+/g, '').substr(0, 1); 

しかし、私は単にそれが特殊文字を返すようにする方法を知りません。

正規表現で特殊文字をエスケープする必要があることは当然認識していますが、バックスラッシュやスラッシュの組み合わせでは生成されていません(常に空白か0を返します)。たとえば、私のようなものを試してみました:(?多分36は、この場合は間違っている)

Math.random().toString(36).replace(/[^\?\!\$]+/g, '').substr(0, 1); 

正直に言うと、私は単純に起因するものの任意の数に、問題があるかもしれない十分に正規表現を理解していません誰かが私に助言を与えることができたら本当に感謝します!

+0

ような何かをしようと、ちょうどこれらの4つの特殊文字、またはランダムに ' - z'ではありません何? – adeneo

+2

'Math.random()。toString(36)'は特殊文字を生成しません。 – adeneo

+0

これらの4は単なる例であり、基本的には任意のセットのランダムな特殊文字を返す正規表現を取得できるようにしたいと思いますそれが($、§、*)か(?、#、&)のいずれであるかを問わず、私が選んだ文字の数です。 – lwndt

答えて

0

問題を解決するためにregexenを使用する理由を明確にしていません。

@ sweaver2112さんのコメントからのアイデアを採用し、そう

function randomSpecialChar() { 
    // example set of special chars as a string in no particular order 
    var s = "!\"§$%&/()=?\u{20ac}"; 

    // generating a random index into the string and extracting the character at that position 
    return s.substr(Math.floor(s.length*Math.random()), 1); 
} 
関連する問題