I'm looking for some regex pattern to:
So:
I found regex which is helpful for recognize that string has only special sign: /^\W*\w.*$/, but I don't know how to join it with condition about not only repeated characters. Thansks for any advices.
You can assert not only the same characters and make sure to match at least a single word character.
^(?!(.)\1+$)[^\w\n]*\w.*$
Explanation
^ Start of string(?!(.)\1+$) Negative lookahead, assert not only the same characters in the string matching at least 2 characters[^\w\n]* Optionally match any character except a word character or newline\w Match at least a single word character.* Optionally match any character$ End of stringconst regex = /^(?!(.)\1+$)[^\w\n]*\w.*$/;
[
"11111111",
"1111811111",
"rrrrrrrr",
"rrrrrrrrrr5",
"11111111%",
"%$!@$!@@@@",
"%%%%%%%%%1",
"a"
].forEach(s => {
if (regex.test(s)) {
console.log(s + " allow")
} else {
console.log(s + " not allow")
}
});
If you don't want to match any spaces in the string, you can match non whitespace chars using \S
^(?!(\S)\1+$)[^\w\s]*\w\S*$