Javascript 带有JS正则表达式的随机特殊字符

Javascript 带有JS正则表达式的随机特殊字符,javascript,regex,special-characters,Javascript,Regex,Special Characters,我试图在JS中使用正则表达式从选择中返回一个随机特殊字符,例如?,!,*,$ 我可以使用以下代码生成随机的非特殊字符: Math.random().toString(36).replace(/[^a-z]+/g, '').substr(0, 1); 然而,我只是不知道如何让它返回特殊字符 我当然知道需要在正则表达式中转义特殊字符,但到目前为止,没有反斜杠和/或斜杠的组合产生chracter(它总是在警报中返回空白或0)。例如,我尝试了以下方法: Math.random().toString(3

我试图在JS中使用正则表达式从选择中返回一个随机特殊字符,例如?,!,*,$

我可以使用以下代码生成随机的非特殊字符:

Math.random().toString(36).replace(/[^a-z]+/g, '').substr(0, 1);
然而,我只是不知道如何让它返回特殊字符

我当然知道需要在正则表达式中转义特殊字符,但到目前为止,没有反斜杠和/或斜杠的组合产生chracter(它总是在警报中返回空白或0)。例如,我尝试了以下方法:

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

老实说,我对正则表达式的理解还不够透彻,这个问题可能是由很多原因造成的(也许36是错误的?),如果有人能给我一些建议,我将不胜感激

您还没有弄清楚为什么要使用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);
} 

那么,就这四个特殊字符,或者任何不是以随机方式
a-z
的字符?请注意
Math.random().toString(36)
不会生成特殊字符这四个字符只是一个例子,基本上我希望能够得到一个正则表达式,它返回我选择的任意字符集的随机特殊字符,无论是($,§,*)还是(?,#,&)。也许你应该创建一个这些特殊字符的数组,然后生成一个随机数来按索引选择一个字符?你真的应该使用
String.fromCharCode(97+Math.floor(Math.random()*26))
来生成标准字符,而不是
toString(36)
+regex。