在Javascript中使用正则表达式匹配特殊字符' - '

时间:2014-06-07 18:00:00

标签: javascript regex string

我有一个字符串p9909abc0221-p9909abc0221我已经编写了正则表达式来匹配用户输入并验证它。字符串可能包含也可能不包含' - 'spcial字符。

使用以下代码

return (str !== undefined && str.match('^(P|p)[0-9]{4}(ABC|abc)[0-9]{4}[/-]$'));

我认为我对' - '特殊字符做错了。任何帮助都会很棒

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)

根据以下评论更新。