我有一个字符串p9909abc0221-
和p9909abc0221
我已经编写了正则表达式来匹配用户输入并验证它。字符串可能包含也可能不包含' - 'spcial字符。
使用以下代码
return (str !== undefined && str.match('^(P|p)[0-9]{4}(ABC|abc)[0-9]{4}[/-]$'));
我认为我对' - '特殊字符做错了。任何帮助都会很棒
答案 0 :(得分:1)
这里有一些问题:
/.../
,而不是'...'
(ABC|abc)
只是使模式不区分大小写(除非您不允许Abc
)[\-]
与-
\d
是[0-9]
即,
return (str !== undefined && str.match(/^p\d{4}abc\d{4}-?$/i));
或
return (str !== undefined && str.match(/^[Pp]\d{4}(ABC|abc)\d{4}-?$/));
答案 1 :(得分:0)
-?
表示-
可能只出现一次[/-]
没有意义这应该有效:
^(P|p)[0-9]{4}(ABC|abc)[0-9]{4}-?$
答案 2 :(得分:0)
如果' - 'char可能包含或不包含,则需要使用'?'
所以你的正则表达式必须是这样的:
^(P|p)[0-9]{4}(ABC|abc)[0-9]{4}-?$
您可以尝试正则表达式: http://regex101.com/r/cU5oK8
答案 3 :(得分:0)
根据您提供的两个示例,这对我有用:
str.match(/p\d{4}abc\d{4}-?/i)
根据以下评论更新。