如何不允许只设置相同的字符和特殊符号 - 正则表达式 js

How to don't allow set only the same characters and only special sign - regex js

我正在寻找一些正则表达式模式来:

所以:

我找到了有助于识别字符串只有特殊符号的正则表达式:/^\W*\w.*$/,但我不知道如何在不只是重复字符的条件下加入它。感谢您的任何建议。

您不仅可以断言相同的字符,还可以确保至少匹配一个单词字符。

^(?!(.)+$)[^\w\n]*\w.*$

说明

  • ^ 字符串开头
  • (?!(.)+$) Negative lookahead, assert not only the same characters in the string matching at least 2 characters
  • [^\w\n]* 可选择匹配除单词字符或换行符之外的任何字符
  • \w 至少匹配一个单词字符
  • .* 可选匹配任何字符
  • $ 字符串结束

Regex demo

const regex = /^(?!(.)+$)[^\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")
  }
});


如果不想匹配字符串中的任何空格,可以使用 \S

匹配非空白字符
^(?!(\S)+$)[^\w\s]*\w\S*$

Regex demo