1

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

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 代码)

4

2 回答 2

2

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

/^((?=\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('-');
}
于 2012-06-11T22:08:23.443 回答
0

您可以使用以下内容:

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!");
}
于 2012-06-11T22:02:42.737 回答