我有一个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 regex语法。我理解conditional regex syntax used here is not supported by JavaScript regex engine,所以我应该重写它。
我从第一组开始:
这就是我提出的问题(live demo):
/^(?!(?=(?:ss|ww))|(?![a-hj-np-tv-z]{2}))/i
它有效。现在我想补充第二部分:
所以我试图添加(?:\s|-)?[0-9]{3}
,但它失败了。我想这可能与第一组is not consumed的事实有关,但我不明白为什么。可选地,如果有人也能够帮助我提供有关如何创建前两个字母组的捕获组的信息(我现在不需要它,但是帽子可以帮助我理解这个过程)。
答案 0 :(得分:3)
我想你可以简单地使用以下内容:
update
这似乎对我有用。
答案 1 :(得分:1)
开始可以
/^(?!ss|ww|.[iou]|[iou].)[a-z]{2}[-\s]?\d{3}/i
完整的表达是
/^(?!ss|ww|.[iou]|[iou].)[a-z]{2}[-\s]?\d{3}[-\s]?(?!ss|ww|.[iou]|[iou].)[a-z]{2}$/i