属性值的正则表达式

Regular expressions for property values

本文关键字:正则表达式 属性      更新时间:2023-09-26

我有一个可以接受不同格式作为值的属性:

format1 - 2 values separated by space
ex1: left center
ex2: center bottom
format2 - 2 values separated by space, each one can have 1 or 2 values separated by "-" 
ex1: left-right center
ex2: center top-bottom
format3 - 2 values separated by "-"
ex1: left-diag
ex2: right-diag

现在我正在拆分字符串并使用一系列 if 块来确定格式和值。

在这种情况下,是否可以使用正则表达式来找出格式并检索每种格式的值?

(JavaScript 代码)

如果您需要使用单个正则表达式,这应该可以做到:

/^((?='S*'s)['w-]+|'w+)['s-]('S.*)/
基于逻辑,

如果有空格,它是分隔符,否则-是分隔符。第一组将所有内容与分隔符匹配,第二组将其余部分匹配。

用法示例:

function split(str){
  var m = str.match(/^((?='S*'s)['w-]+|'w+)['s-]('S.*)/);
  m.shift();
  return m;
}
alert(split("foo bar"));
alert(split("foo-bar baz"));
alert(split("baz foo-bar"));
alert(split("baz-foo"));​

另一方面,您不必使用如此复杂的表达式。像这样简单的事情就可以了:

function split(str){
  var arr = str.split(' ');
  if(arr.length == 2) return arr;
  return str.split('-');
}

你可以使用类似这样的东西:

var regex = /^('w+)$/g;
var data;
if(regex.test(data)) {
    var matches = data.match(regex);
    for(var match in matches) {
        console.log(matches[match]);
    } 
} else {
    console.log("No matches found!");
}