Javascript 正则表达式匹配下划线前后的字符
我必须编写带有以下匹配项的正则表达式:Javascript 正则表达式匹配下划线前后的字符,javascript,regex,Javascript,Regex,我必须编写带有以下匹配项的正则表达式: 字符串应以字母-[a-zA-Z]开头 字符串可以包含字母、空格、数字、\uu和-(下划线和连字符) 字符串不应以\uuu或-结尾(下划线和连字符) 下划线字符前后不应有空格 我提出了下面的正则表达式,但它似乎不起作用 /^[a-zA-Z0-9]+(\b_|_\b)[a-zA-Z0-9]+$/ 测试用例: HelloWorld // Match Hello_World //Match Hello _World // doesn't match Hell
- 字符串应以字母-[a-zA-Z]开头
- 字符串可以包含字母、空格、数字、
和\uu
(下划线和连字符)-
- 字符串不应以
或\uuu
结尾(下划线和连字符)-
- 下划线字符前后不应有空格
/^[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-z]$|^[a-z](?:。=[^]))?(?:[a-z\d-][^].[^])*[a-z\d-]*[^.-]$/i 我有点不确定规则4——你的意思是下划线可以在前面或后面有空格,还是两者都没有,但不能在前面和后面有空格?这是怎么回事
^[a-zA-Z](\B_\B|[a-zA-Z0-9 -])*[a-zA-Z0-9 ]$
细分:
^
[a-zA-Z] allowed characters at beginning
(
\B_\B underscore with no word-boundary
| or
[a-zA-Z0-9 -] other allowed characters
)*
[a-zA-Z0-9 ] allowed characters at end
$
你可以用
^(?!.*(?:[_-]$|_ | _))[a-zA-Z][\w -]*$
见
说明:
-字符串的开头^
-在一些字符((?!!*(:[[u-]$$\ u124;))
)之后,不能出现(*
)字符串末尾((?!…)
)的[[u-]$
)或空格+-
或+空格
-匹配和使用的第一个字符必须是ASCII字母[a-zA-Z]
-0+字([\w-]*
=\w
)字符或空格或[a-zA-Z0-9\]
-
-字符串结尾$
- 您可以使用这个:
^(?!^[ _-]|.*[ _-]$|.* _|.*_ )[\w -]*$
对于测试用例,我使用modifiergm
分别匹配每一行
如果不应认为emtpy字符串是可接受的,则将最终的*
更改为+
:
^(?!^[ _-]|.*[ _-]$|.* _|.*_ )[\w -]+$
每个部分的含义
和^
匹配输入的开始/结束$
:不应匹配的内容列表:(?!)
:逻辑或|
:以这三个字符中的任何一个开头^[-]
:以这三个字符中的任何一个结尾*[\u-]$
:空格后跟下划线*.
:下划线后跟空格*.
:任何字母数字字符或下划线(也与[\w-]
匹配)或空格或连字符\w
:零次或多次*
:一次或多次+
/^[a-zA-Z][a-zA-Z0-9\-]+[a-zA-Z0-9]$/
这还不清楚:第4个条件没有意义,因为前3个条件意味着字符串中根本没有空格。我会使用^[a-zA-Z][a-zA-Z0-9_-]*[a-zA-Z0-9]$
,或者,如果需要匹配1个字符输入,^(?!*[[u-]$)[a-zA-Z][a-zA-Z0-9_-]*$
“字符串应该以alpabets开头”首先是:[a-zA-Z0-9]
。。。你需要更多的思考。下划线在前后都没有空间好的,我只是想非常清楚你需要什么。有4种可能性(忽略引号字符,问号用于任何非空格字符):1)“?”2)“?”3)“?”4)“?”哪些是可以接受的?好的。所以我的正则表达式应该有用。你能把你测试这个的字符串放到原始的帖子里吗?(或者,如果它们真的很长,很复杂,就拿出一些我们可以用来调试的例子)两个问题:中间好像有一个管道漏掉了,这个正则表达式拒绝单字符输入,比如<代码> a <代码>。好的,我增加了对单个字符的支持。我不知道你所说的烟斗丢失是什么意思。很有魅力。谢谢,我知道我错过了什么。干杯:)允许角色和要求角色之间有区别。这个正则表达式的开头需要一个字符,结尾需要另一个字符,这意味着它不会匹配单个字符输入,比如a
@pallingh:只是为了确定:Hello\uworld
和Z
输入的预期行为是什么?还有一个小问题:空字符串呢?是的,是一个失败的情况。我如何匹配它?@PalSingh:看我的答案,和我的答案相似,但允许一个空字符串。事实上,这是一个解释问题。我添加了一个+
变体。我现在看到您比我早一分钟就到了:-),至于匹配空字符串,可以使用这个小mod(在模式的消费部分有一个可选组:。满足所有测试用例。谢谢