javascript - 下划线前后的正则表达式匹配字符

标签 javascript regex

我必须编写一个包含以下匹配项的正则表达式:

  • 字符串应以字母开头 - [a-zA-Z]
  • 字符串可以包含字母、空格、数字、_-(下划线和连字符)
  • 字符串不应以 _-(下划线和连字符)结尾
  • 下划线字符前后不能有空格。

我想出了下面的正则表达式,但它似乎不起作用

/^[a-zA-Z0-9]+(\b_|_\b)[a-zA-Z0-9]+$/

测试用例:

HelloWorld // Match
Hello_World //Match
Hello _World // doesn't match
Hello_ World // doesn't match
Hello _ World // doesn't match
Hello_World_1 // Match
He110_W0rld // Match
Hello - World // Match
Hello-World // Match
_HelloWorld // doesn't match
Hello_-_World // match

最佳答案

你可以使用

^(?!.*(?:[_-]$|_ | _))[a-zA-Z][\w -]*$

参见 regex demo

解释:

  • ^ - 字符串的开始
  • (?!.*(?:[_-]$|_ | _)) - 在一些字符 (.*) 之后不得出现 ((?!...)) 字符串末尾的 _- ([_-]$ ), 也不是空格+__+空格
  • [a-zA-Z] - 匹配和使用的第一个字符必须是 ASCII 字母
  • [\w -]* - 0+ 字 (\w = [a-zA-Z0-9_]) 字符或空格或-
  • $ - 字符串结尾

关于javascript - 下划线前后的正则表达式匹配字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38498175/

相关文章:

javascript - 在 facebox 和 jquery 中选择复选框?

python - 如何找到更改目录名称的路径?

python - 复杂的 python 正则表达式

javascript - 使用 .css ("background-color") 进行比较 jQuery/Js

php - 使用用户的正则表达式安全吗?

javascript - Bootstrap 3 子模态?

javascript - jQuery 替换字符串中的 HTML

javascript - 如何移动由 CSS 样式表设置样式的元素?

javascript - 尝试了解 Angular 路由概念,但是当尝试重新加载页面时,没有显示任何内容。

javascript - 使用javascript正则表达式替换时忽略html实体