2017-12-08 16 views
0

JS에서 정규 표현식을 사용하여 선택에서 임의의 특수 문자 (예 :?,!, *, $)를 반환하려고합니다.JS regex로 임의의 특수 문자

나는 다음과 같은 코드를 사용하여 임의 - 특수 문자를 생성 할 수있어 :

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

그러나, 나는 단순히 특수 문자를 반환 할 수 있도록하는 방법을 모르겠어요.

정규식에서 특수 문자를 이스케이프해야한다는 사실은 물론 알고 있지만 백 슬래시 및/또는 슬래시를 조합하면 생성자가 생성되지 않습니다 (공백 또는 공백이 항상 반환 됨). 예를 들어 내가 좋아하는 뭔가를 시도 : (? 아마 36이 경우 잘못)

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

솔직히 말해서, 나는 단순히 때문에 일의 수에 문제가있을 수 있습니다 충분히 정규 표현식을 이해하지 못하는 누군가가 내게 조언을 해줄 수 있다면 정말 고맙겠습니다!

+0

뭔가를 시도, 단지 그 4 개 특수 문자, 또는 임의의 방식으로'A-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); 
}