我正在尝试创建一个正则表达式来验证字符串是否采用以下格式。
[x' x" 1/4, x' x" 1/2, x' x" 3/4]
有效示例:
5' 10" 1/2
6' 3" 1/4
4' 8"
5'
10"
有人可以在这里帮助我吗?
答案 0 :(得分:2)
根据您的样本,您可以使用此正则表达式,
^\d+(?:'(?: +\d+"(?: +\d+\/\d+)?)?|")$
说明:
^
-输入开始\d+
-一个或多个数字(?:'
-非捕获组,后跟单引号(?:
-非捕获组的开始+\d+"
-匹配一个或多个空格,后跟一个或多个数字,后跟双引号(?: +\d+\/\d+)?
-匹配一个或多个空格,后跟一个或多个数字,然后匹配文字/
,再匹配一个或多个数字,并且整个字符是可选的,因为它被放置在非捕获组中,后跟?
)?
-关闭上一个非捕获组和?
意味着该组也是可选的|")
-替换为仅数字后跟双引号和组尾的支持情况$
-输入结束答案 1 :(得分:1)
尝试此正则表达式:
^(?!\s*$)(?:(?!0+')\d+')?(?: *(?!0+")\d+")?(?: *(?!0+\/)\d+\/(?!0+$)\d+)?$
说明:
^
-断言字符串的开头(?!\s*$)
-否定超前查询,以确保当前匹配项后不跟0+空格,后跟字符串末尾。这是为了确保正则表达式不匹配空字符串或仅包含空格的字符串(?:(?!0+')\d+')?
-匹配1+位数字,后跟'
。另外,请确保它与0'
之类的内容不匹配。最后的?
使此子匹配为可选。(?: *(?!0+")\d+")?
-匹配0+空格,后跟1+数字,后跟"
。另外,请确保它与0"
之类的内容不匹配。最后的?
使此子匹配为可选。(?: *(?!0+\/)\d+\/(?!0+$)\d+)?
-匹配0+空格,后跟X/X
形式的小数,其中X是数字。另外,它不匹配0/6
或0/0
或8/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+)?)?$
答案 4 :(得分:0)
您可以在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);