正则表达式在下划线之前和之后匹配字符

Pal*_*ngh 3 javascript regex

我必须写一个正则表达式匹配以下:

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

我提出了以下正则表达式,但它似乎不起作用

/^[a-zA-Z0-9]+(\b_|_\b)[a-zA-Z0-9]+$/
Run Code Online (Sandbox Code Playgroud)

测试用例:

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
Run Code Online (Sandbox Code Playgroud)

Wik*_*żew 8

你可以用

^(?!.*(?:[_-]$|_ | _))[a-zA-Z][\w -]*$
Run Code Online (Sandbox Code Playgroud)

请参阅正则表达式演示

说明:

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