javascript - 正则表达式不允许没有前缀或后缀的特殊字符

标签 javascript regex

我正在为以下验证字符串编写正则表达式。我编写了以下正则表达式。

^[^\s]+[a-z]{0,}(?!.* {2})[ a-zA-z]{0,}$

它验证了

  1. 开头没有空格。
  2. 不允许有两个连续空格。
  3. 问题是它允许使用单个特殊字符。它不应允许使用特殊字符,除非它以字母数字字符为后缀或前缀。

示例:

# -> 不允许。

允许

#AA#A23A

最佳答案

一种选择是断言字符串不包含单个“特殊”字符或使用负前视彼此相邻的 2 个特殊字符。

^(?!.*[^a-zA-Z0-9\s][^a-zA-Z0-9\s])(?!.*(?:^| )[^a-zA-Z0-9\s](?!\S))\S+(?: \S+)*$

说明

  • ^ 字符串开头
  • (?! 负向前瞻,断言右侧不包含
    • .*[^a-zA-Z0-9\s][^a-zA-Z0-9\s] 匹配除 a-zA-Z0-9 或 a 之外的 2 个字符彼此相邻的空白字符
  • ) 关闭前瞻
  • (?! 负向前瞻,断言右侧不包含
    • .*(?:^| )[^a-zA-Z0-9\s](?!\S) 匹配 a-zA-Z0-9 以外的单个字符或一个空白字符
  • ) 关闭前瞻
  • \S+(?:\S+)* 匹配 1 个以上非空白字符,并可选择重复一个空格和 1 个以上非空白字符
  • $ 字符串结尾

Regex demo

关于javascript - 正则表达式不允许没有前缀或后缀的特殊字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64130407/

相关文章:

sql - T-SQL正则表达式替换

javascript - 如何在 1 小时 3 分钟内将功能时间和日期转换为类似内容

javascript - 执行随机 css 更改

PHP json_encode 和 javascript 函数

javascript - 在数组中优雅地查找正则表达式

javascript - 匹配单个字符但不匹配多个

javascript - 正则表达式获取 <b> 标签之间的内容

javascript - 如何使用谷歌应用程序脚本删除事件并发送电子邮件

javascript - 使用javascript使用递归函数在 Canvas 上绘制五彩点

字符串最后一位的 PHP 位置