0

我正在尝试验证正则表达式模式,这样用户只能在字母数字之间键入带有哈希符号的字母数字,哈希(#)符号不能位于开头或结尾。

这就是我所拥有的

/[^a-zA-Z0-9]+$/g

4

2 回答 2

2

你可以使用这个:

/^[a-z0-9]+#[a-z0-9]+$/i     

或者如果你想要一个可选的哈希符号:

/^[a-z0-9]+#?[a-z0-9]+$/i

或者这个对于多个哈希符号:

/^[a-z0-9]+[a-z0-9#]+[a-z0-9]+$/i

只检查一个字符(如果 # 是可选的):

2) /^[a-z0-9]+(?:#[a-z0-9]+)?$/i

3) /^[a-z0-9]+(?:[a-z0-9#]+[a-z0-9]+)?$/i

于 2013-07-11T17:38:10.453 回答
1

/^[a-z0-9]+#[a-z0-9]+$/i应该做的伎俩。

/^[a-z0-9]+(#[a-z0-9]+)?$/i如果 '#' 是可选的

[a-z0-9]+表示一个或多个字母或数字(+表示一个或多个)

(#[a-z0-9]+)?表示“#”后跟上面的内容,但整个事情是零次或一次(?表示零或一)

^$锚定整个事情的开始和结束

表示i不区分大小写

因此,这将匹配一个或多个字母数字,可选地后跟一个“#”,然后是一个或多个字母数字。

如果你想要更多的 '#' 字符,你可以使用/^[a-z0-9]+([#a-z0-9]+[a-z0-9])?$/i。这将匹配一个或多个字母数字,可选地后跟一个或多个“#”或字母数字,然后是一个字母数字。

您也可以\w用于字母数字字符。但是请注意,这与 , 相同[a-zA-Z0-9_],并且允许使用_下划线字符。如果你不想要下划线,你应该坚持使用[a-zA-Z0-9](或[a-z0-9]使用i

编辑看到你想要的空间。试试这个(它适用于我所有的测试):

/^[a-z0-9]+(([#a-z0-9\s]+)?[a-z0-9])?$/i

请注意:它不允许开头和结尾有空格,但允许连续的空格。它将允许可选的“#”字符以及任意数量的字符。\s表示空格

于 2013-07-11T17:59:14.263 回答