我正在尝试验证正则表达式模式,这样用户只能在字母数字之间键入带有哈希符号的字母数字,哈希(#)符号不能位于开头或结尾。
这就是我所拥有的
/[^a-zA-Z0-9]+$/g
你可以使用这个:
/^[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
/^[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
表示空格