正则表达式 (JavaScript):匹配英尺和/或英寸

Kri*_*lko 3 javascript regex validation

我正在尝试匹配英尺和英寸,但我无法获得“和/或”,因此如果前半部分正确,则验证:

代码:(在 JavaScript 中)

var pattern = "^(([0-9]{1,}\')?([0-9]{1,}\x22)?)+$";

function testing(input, pattern) {
        var regex = new RegExp(pattern, "g");
        console.log('Validate '+input+' against ' + pattern);
        console.log(regex.test(input));
    }
Run Code Online (Sandbox Code Playgroud)

有效的测试应该是:

  • 1'
  • 1'2"
  • 2"
  • 2(假设为英寸)

无效的应该是: * 任何其他内容,包括空 *1'1'

但我的正则表达式匹配invalid 1'1'

Tim*_*ker 6

删除+末尾的(现在允许多个英尺/英寸实例)并检查是否有空字符串或非法条目,例如1'2使用单独的否定先行断言。我还更改了正则表达式,因此组 1 包含脚,组 2 包含英寸(如果匹配):

^(?!$|.*\'[^\x22]+$)(?:([0-9]+)\')?(?:([0-9]+)\x22?)?$
Run Code Online (Sandbox Code Playgroud)

在 regex101.com 上进行实时测试。

解释:

^(?!$|.*\'[^\x22]+$)(?:([0-9]+)\')?(?:([0-9]+)\x22?)?$
Run Code Online (Sandbox Code Playgroud)