匹配特殊字符'-';在Javascript中使用正则表达式
我有一个字符串匹配特殊字符'-';在Javascript中使用正则表达式,javascript,regex,string,Javascript,Regex,String,我有一个字符串p9909abc0221-和p9909abc0221我编写了正则表达式以匹配用户输入并验证它。字符串最后可能包含也可能不包含“-”特殊字符 使用下面的代码 return (str !== undefined && str.match('^(P|p)[0-9]{4}(ABC|abc)[0-9]{4}[/-]$')); 我认为我为'-'这个特殊角色做了错事。任何帮助都很好 使用-?指示-最多只能出现一次 [/-]没有意义 这应该起作用: ^(P|p)[0-9]{4}
p9909abc0221-
和p9909abc0221
我编写了正则表达式以匹配用户输入并验证它。字符串最后可能包含也可能不包含“-”特殊字符
使用下面的代码
return (str !== undefined && str.match('^(P|p)[0-9]{4}(ABC|abc)[0-9]{4}[/-]$'));
我认为我为'-'这个特殊角色做了错事。任何帮助都很好- 使用
指示-?
最多只能出现一次-
没有意义[/-]
^(P|p)[0-9]{4}(ABC|abc)[0-9]{4}-?$
这里有一些问题:
- 正则表达式不是字符串,请使用
,而不是/…/
'…'
- 与
相反,只需使模式不区分大小写(除非您不允许(ABC | ABC)
)ABC
与[\-]
-
是\d
[0-9]
return (str !== undefined && str.match(/^p\d{4}abc\d{4}-?$/i));
或
如果可能包含或不包含“-”字符,则需要使用“?” 因此,您的正则表达式需要如下所示:
^(P|p)[0-9]{4}(ABC|abc)[0-9]{4}-?$
您可以在以下位置尝试正则表达式:
根据您提供的两个示例,这对我很有用:
str.match(/p\d{4}abc\d{4}-?/i)
更新,基于下面的评论。它不是特殊字符,仅在字符类中定义范围。只需像使用其他字符一样使用它(即,
-
而不是[/-]
。此外,您可能试图通过执行所做的操作来转义它,但需要使用反斜杠;[\-]
是可能的。由于-
显然是可选的,请使用-?
。作为旁注,您必须将您的模式放在分隔符之间/
不带引号:str.match(/^(P |…$/)
他的第二个例子没问题,是我草率的编辑杀死了一个字符。顺便说一句,你可能想在表达式中添加锚,因为问题是关于验证的。
str.match(/p\d{4}abc\d{4}-?/i)