正则表达式匹配5' 2",6'和2' -4"但不是3'' (两个撇号)

时间:2016-02-09 21:39:25

标签: regex

我试图解析使用帝国速记符号的长度数量(英尺为',英寸为"),而我有点窘迫。使用这个正则表达式:

/\d+(\.\d+)?(?:[ -]\d+\/\d+)?(?:\')/g

我可以匹配以下字符串(每个字符串在一个更大的字符串中单独传递):

  • 5'6"(匹配5'
  • 6'
  • 3 1/2'
  • 12.5'

但是,我在使用''代替"的字符串中遇到了问题。我尝试在最后添加[^\'],但这与第一个示例中的5'6匹配,如果我放[^\'\d],则根本不匹配第一个示例。有什么帮助吗?

1 个答案:

答案 0 :(得分:2)

为了匹配5'中的5'6'',您只需要使用否定前瞻:

/\d+(?:\.\d+)?(?:[ -]\d+\/\d+)?'(?!')/g
                                ^^^^^

请参阅regex demo

(?!')如果最后的'跟随另一个单撇号,则整个匹配将失败。