JavaScript 正则表达式匹配法国车牌

标签 javascript regex

我有 PCRE 正则表达式的工作版本,用于检查给定字符串是否匹配 French licence plates 。它是这样的(live demo):

/^(?(?!ss|ww)[a-hj-np-tv-z]{2})(?:\s|-)?[0-9]{3}(?:\s|-)?(?(?!ss)[a-hj-np-tv-z]{2})$/i

现在我想将其转换为 JavaScript 正则表达式语法。我明白conditional regex syntax used here is not supported by JavaScript regex engine ,所以我应该重写它。

我从第一组开始:

  1. 必须有两个字母
  2. 他们不可能是 SS 或 WW
  3. 他们无法使用 I、O、U

这就是我的想法( live demo ):

/^(?!(?=(?:ss|ww))|(?![a-hj-np-tv-z]{2}))/i

而且它有效。现在我想添加第二部分:

  1. 第一组可以(但不一定)后跟空格字符或连字符。
  2. 之后是一组恰好为 3 位的数字。

所以我尝试添加 (?:\s|-)?[0-9]{3} 但失败了。我想这可能与第一组is not consumed有关。 ,但我不明白为什么。或者,如果有人也能够帮助我了解如何创建前两个字母组的捕获组(我现在不需要它,但帽子会帮助我理解这个过程)。

最佳答案

我想你可以简单地使用以下内容:

/^(?!ss|ww)[a-hj-np-tv-z]{2}[ -]?[0-9]{3}[ -]?(?!ss)[a-hj-np-tv-z]{2}$/i

它似乎对我来说效果很好。

关于JavaScript 正则表达式匹配法国车牌,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37855766/

相关文章:

java - 使用所有格正则表达式运算符匹配 Java DecimalNumeral

javascript - 如何只删除字符串末尾的数字?

javascript - 假设 Javascript 始终处于打开状态是否安全?

python - 用于提取不同格式的日期 (d,m,y) 的通用 Python 正则表达式

python删除以 '\u...'开头的单词

javascript - Grid 内的列在 react-native-base 中占一半宽度

java - 单个单词的正则表达式

javascript - Angular 组件 : no template replace option?

javascript - 用于 JS 事件时 <a href ="?"> 的理想值?

javascript - Twilio - 为所有连接的参与者显示远程参与者视频