用于验证字符串格式的正则表达式-英尺和英寸

时间:2019-02-27 16:12:22

标签: regex typescript validation

我正在尝试创建一个正则表达式来验证字符串是否采用以下格式。

[x' x" 1/4, x' x" 1/2, x' x" 3/4]

有效示例:

  • 5' 10" 1/2
  • 6' 3" 1/4
  • 4' 8"
  • 5'
  • 10"

有人可以在这里帮助我吗?

5 个答案:

答案 0 :(得分:2)

根据您的样本,您可以使用此正则表达式,

^\d+(?:'(?: +\d+"(?: +\d+\/\d+)?)?|")$

说明:

  • ^-输入开始
  • \d+-一个或多个数字
  • (?:'-非捕获组,后跟单引号
  • (?:-非捕获组的开始
  • +\d+"-匹配一个或多个空格,后跟一个或多个数字,后跟双引号
  • (?: +\d+\/\d+)?-匹配一个或多个空格,后跟一个或多个数字,然后匹配文字/,再匹配一个或多个数字,并且整个字符是可选的,因为它被放置在非捕获组中,后跟?
  • )?-关闭上一个非捕获组和?意味着该组也是可选的
  • |")-替换为仅数字后跟双引号和组尾的支持情况
  • $-输入结束

Demo

答案 1 :(得分:1)

尝试此正则表达式:

^(?!\s*$)(?:(?!0+')\d+')?(?: *(?!0+")\d+")?(?: *(?!0+\/)\d+\/(?!0+$)\d+)?$

Click for Demo

说明:

  • ^-断言字符串的开头
  • (?!\s*$)-否定超前查询,以确保当前匹配项后不跟0+空格,后跟字符串末尾。这是为了确保正则表达式不匹配空字符串或仅包含空格的字符串
  • (?:(?!0+')\d+')?-匹配1+位数字,后跟'。另外,请确保它与0'之类的内容不匹配。最后的?使此子匹配为可选。
  • (?: *(?!0+")\d+")?-匹配0+空格,后跟1+数字,后跟"。另外,请确保它与0"之类的内容不匹配。最后的?使此子匹配为可选。
  • (?: *(?!0+\/)\d+\/(?!0+$)\d+)?-匹配0+空格,后跟X/X形式的小数,其中X是数字。另外,它不匹配0/60/08/0形式的分数。
  • $-声明字符串的结尾

答案 2 :(得分:0)

使用此正则表达式:

  

^ \ d + ['“](?: + \ d +”(?: + \ d + / \ d +)?)$

说明:

MyNewObject = SomeOldObject.extend({
    initialize: function (data, options) {
        this._data = data;
        var context = this;
        var callback = function () {
            context.loadData(context);
        };
        google.charts.load('current', {
            'packages': ["line", "corechart"]
            , "callback": callback
        });
    }
    ,
    loadData: function (context) {
        this._dataTable = new google.visualization.DataTable();
        //now I can use context._data
    }
})

答案 3 :(得分:0)

尝试使用正则表达式:^(?:\d+')?(?: ?\d+"( ?\d+\/\d+)?)?$

Demo

答案 4 :(得分:0)

Javascript

您可以在JavaScript Demo: RegExp Constructor上进行模拟。

var s = `5' 10" 1/2`;
var s1 = `6' 3" 1/4`;
var s2 = `4' 8"`;
var s3 = `5'`;
var s4 = `10"`;

var regex = /\d[\s\'\"\d\/]+/;

var result = s.match(regex);
var result1 = s1.match(regex);
var result2 = s2.match(regex);
var result3 = s3.match(regex);
var result4 = s4.match(regex);

console.log(result);
console.log(result1);
console.log(result2);
console.log(result3);
console.log(result4);