正则表达式 - 不包含某些字符的可打印ASCII(JS)

时间:2017-11-15 07:27:55

标签: javascript regex

我试图找到一个正则表达式,允许 可打印的ASCII字符 ,除了 - " / \ []:; | =,+ *? < >
字符串长度必须为1-25

这将有效:

/^[^\\[\]\:\;\|\=\,\/+\*\?<>\"]{1,25}$/

但它也会匹配非ASCII 字符

1 个答案:

答案 0 :(得分:2)

您可以使用

/^(?:(?![:[\];|\\=,\/+*?<>"])[ -~]){1,25}$/

请参阅regex demo

<强>详情

  • ^ - 字符串开头
  • (?: - 外部分组,用于匹配量化的前瞻限制的ASCII字符范围
    • (?![:[\];|\\=,\/+*?<>"]) - 下一个字符不能是字符类中定义的字符(:[];|\=,/+*?<>"
    • [ -~] - 任何可打印的ASCII
  • ){1,25} - 1到25次出现
  • $ - 字符串结尾