允许特殊字符,但只有特殊字符时不允许

2023-12-02

假设我有这个:

[a-zA-Z0-9., -&:]+

允许使用字母数字字母和一些特殊字符(逗号、点、破折号等)一次或多次。但现在,我只想在还有字母数字字母时允许使用这些特殊字符:

a-b, c : ok

.a: : ok

,-.: 不好

,: 不好

我尝试了一些方法,但仍然无法找到一种方法。我怎么做?


如果你想确保其中至少有一个字母数字字符,你可以使用:

[a-zA-Z0-9., &:-]*[a-zA-Z0-9][a-zA-Z0-9., &:-]*

This is basically zero or more of your current pattern (slightly modified(a)), followed by one alphanumeric, followed by zero or more of your current pattern again. This guarantees no match unless the string has one or more alphanumerics.


您可能还想考虑将^ and $如果您使用允许部分匹配的正则表达式函数,则在模式末尾添加标记。没有它,你可以匹配类似的东西<some-invalid-character>A. This may如果您使用“完全匹配”功能,则没有必要。


(a) The modification, as per comments in another answer, is to move the - to the end of the regex to have it treated as a literal hyphen rather than a character range.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

允许特殊字符,但只有特殊字符时不允许 的相关文章

随机推荐

  • 如何使用正则表达式删除字符串中的重复字符?

    我需要替换字符串中的重复字符 我尝试使用 outputString str replaceAll 1 这会替换重复的字符 但字符的位置会发生变化 如下所示 input haih output aih 但我需要得到一个输出hai 也就是说 字
  • 使用 indy / delphi 组件通过 https 发布文件

    我正在尝试使用 delphi 中的 Indy 组件通过 https 上传文件 这是我的代码 HTTP TIdHTTP Create Self IOHandler TIdSSLIOHandlerSocketOpenSSL Create HTT
  • 如何计算出响应式 CSS 的正确最小宽度和最大宽度值?

    我现在刚刚开始研究响应式 CSS 和设计 我想知道如何计算出各种设备宽度 我不想花一整天的时间测试每一个可能的移动设备 我只想让响应式布局足以发挥其作用 我看到一些网站使用 media only screen and max device
  • 在 python 脚本和 applescript 之间传递和接收值

    我对 python 和 applescript 很陌生 我有一个 python 脚本正在调用 2 个 applescripts 我想在 python 中定义一些全局变量并传递给 applescript 1 这些值将由 applescript
  • Azure 逻辑应用 SQL ODATA 按日期筛选

    我正在创建一个新的逻辑应用程序 它读取一个表 其中DateCreated lt ADDDAYS 60 GETDATE 并更新Archived bit to 1 但是 我一生都无法弄清楚如何将该过滤器实现为 ODATA 查询的一部分 到目前为
  • (Robotium) 操作栏向上/主页按钮单击

    I use Robotium作为我的 Android 应用程序的 Junit 测试库 我写了一些效果很好的测试 但是当我尝试编写测试时原生操作栏 s 单击向上 主页按钮 失败了 我的测试代码非常简单 Solo solo new Solo g
  • 为什么我会收到准备好的语句的语法错误? [复制]

    这个问题在这里已经有答案了 我已经编写了一个准备好的语句 但它在 给出了语法错误 我无法理解出了什么问题 它应该传递电影名称并作为该电影的导演获得结果 stmt getConnection createStatement String sq
  • 将 numpy 数组写入 lmdb

    我正在尝试将 python 中的一些 numpy 数组写入 lmdb import numpy as np import lmdb def write lmdb filename lmdb env lmdb open filename ma
  • Android Eclipse 错误:“Gson 无法解析为类型”

    我对 Java Eclipse 和 Android 比较陌生 所以这可能是一个完全愚蠢的问题 但我还是要问它 我正在学习一个项目来测试连接到 flickr api 并简单地显示最近的图像 我现在想要解析从 flickr 收到的 JSON 我
  • 如何防止 scanf 失败导致无限循环

    该代码应该可以换一美元并且运行良好 但教授说他将随字母一起输入随机数字 它可以很好地处理数字 但是当输入字母时会出现无限循环 有什么建议吗 include
  • 如何在android中对本地数据库进行语音识别检查?

    您是否还记得在旧手机中您可以创建语音快捷方式来呼叫某人 我正在尝试在 android 中制作一个具有该功能的应用程序 用户录制想要控制应用程序的单词或声音 语音识别器只会检查它听到的声音是否等于之前录制的声音 有谁知道如何制作这个或知道指南
  • 在Python中调整OSX系统音频音量

    我想通过 python 脚本调整 OSX 中的系统音量 这个问题关于实现键盘快捷键告诉我如何在 applescript 中执行此操作 但我真的很想从 python 脚本中执行此操作 而不使用 os system popen 等 理想情况下
  • Android 中基于一个手柄旋转和缩放视图

    我正在尝试根据 Android 中的一个 拖动 手柄来旋转和缩放视图 随着布局旋转和视图大小调整 最终结果应该是拖动手柄跟随用户手指移动 这是基于结合这两个问题 如何使用手柄在android中缩放视图 在android中绕两点旋转不起作用
  • 使用 htaccess 将页面从一个页面重定向到另一个页面而不更改 url

    有没有办法在 joomla 中使用 htaccess 将页面从一个页面重定向到另一个页面而不更改 url 我想更改网址 http idaycom com index php component quates to http idaycom
  • 如何在 julia 中将 Array{Array{Float64, 1}, 1} 转换为矩阵?

    假设我有这样的输入 gt 0 8681299566762923 0 3472589826095631 3 2300860990307445 3 3731249077464946 如何将其转换为更令人愉快的类型 例如矩阵 已知尺寸 您可以使用
  • 如何在旧版本的 Android 上使用 ActionBar? [复制]

    这个问题在这里已经有答案了 可能的重复 早期 sdk 版本中的 ActionBar 相当于什么 如果我没记错的话 Android 指南说您应该使用 ActionBar 在应用程序内进行全局导航 但与此同时 您通常希望以尽可能最旧的 API
  • 防止静态块的继承

    如果我们运行派生类 它将打印派生类和父类 有什么方法可以防止静态块的继承吗 1类 public class parent static System out println Parent Class2 public class derive
  • Akka 流:读取多个文件

    我有一个文件列表 我想 将所有这些作为单一来源进行阅读 文件应该按顺序 按顺序读取 无循环赛 任何时候都不应要求任何文件完全位于内存中 从文件读取错误应该会崩溃流 感觉这应该可行 Scala akka streams v2 4 7 val
  • .gitattributes 合并驱动程序未使用

    首先我知道这个问题如何告诉 git 始终选择本地版本来进行特定文件上的冲突合并 但这篇文章对我没有帮助 而且由于我的声誉 我无法添加任何评论 http git scm com book en Customizing Git Git Attr
  • 允许特殊字符,但只有特殊字符时不允许

    假设我有这个 a zA Z0 9 允许使用字母数字字母和一些特殊字符 逗号 点 破折号等 一次或多次 但现在 我只想在还有字母数字字母时允许使用这些特殊字符 a b c ok a ok 不好 不好 我尝试了一些方法 但仍然无法找到一种方法