匹配 5'2"、 6', and 2' - 4", but not 3' '(两个撇号)的正则表达式

标签 regex

我正在尝试解析使用英制简写符号的长度数量(' 表示英尺," 表示英寸),但我有点进退两难.使用这个正则表达式:

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

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

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

但是,我遇到过使用 '' 代替 " 的字符串。我尝试添加 [^\']在最后,但这将匹配第一个示例中的 5'6,如果我输入 [^\'\d],它将与第一个示例不匹配完全没有。有什么帮助吗?

最佳答案

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

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

参见regex demo

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

关于匹配 5'2"、 6', and 2' - 4", but not 3' '(两个撇号)的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35302725/

相关文章:

JAVA REGEX 提取圆形冒号 "123:32:21"

python - 从 python 正则表达式中提取两个值

javascript - 从javascript中的字符串中删除Niqqud

python 正则表达式 - 如何用列表中的项目替换多个捕获组

regex - 数据框列上的 Spark scala 模式匹配

javascript - 从冒号向后捕获文本,直到逗号或行首

regex - Sed 和正则表达式

javascript - 需要字母和数字 - 正则表达式

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

javascript - 正则表达式测试 url 和文件路径的重复词