java - 正则表达式允许单个下划线和连字符不在开头或结尾

标签 java regex

我有一个正则表达式,允许字符串之间带有连字符或下划线。但我无法让它在开始或结束时都不允许。

这是我的正则表达式:

^(?!.*__.*)(?!.*--.*)[a-zA-Z0-9_\-]*$

这有效,除非它允许 -_在开始或结束时。不应该有。

其他要求:

  • __--字符串中的任何位置都不允许出现(但 _--_ 是)
  • 除了 _- ,仅允许使用字母数字字符

最佳答案

这个怎么样?

^[^_-].*[^_-]$

只有一个痛点:根本不允许使用 1 个字符长度的字符串。这可能会解决它:

^([^_-](.*[^_-])?)?$

以及未记录的字母数字字符要求:

^([a-zA-Z0-9]([a-zA-Z0-9_-]*[a-zA-Z0-9])?)?$

关于java - 正则表达式允许单个下划线和连字符不在开头或结尾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57953008/

相关文章:

java - 如何使用 Java 代码创建 .xls 或 .xlsx 文件的精确副本?

regex - Powershell Regex - 捕获多个字符串

java - 转义序列无效(有效的是\b\t\n\f\r\"\'\\)

r - [ :alpha:] class and [a-zA-Z]; Is [:alpha:] OS independent? 之间的差异

java - 获取servlet属性而不加载当前jsp页面

java - 返回数组中最长字符串的元素编号

javascript - Wicket AjaxLink 删除 onclick 监听器

java - 从 Java GUI 应用程序启动 Windows 批处理文件

python - 如何用破折号替换所有空格、制表符、换行符、逗号和下划线?

php - 用于替换 html 代码中的 css 类的正则表达式