Javascript 属性值的正则表达式

Javascript 属性值的正则表达式,javascript,jquery,regex,Javascript,Jquery,Regex,我有一个可以接受不同格式作为值的属性: 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

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

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

您可以使用以下内容:

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!");
}

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

/^((?=\S*\s)[\w-]+|\w+)[\s-](\S.*)/
基于这样一种逻辑:如果有空格,它就是分隔符,否则
-
就是分隔符。第一组将所有内容匹配到分隔符,第二组将其余内容匹配到分隔符

:


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

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

是的,这是可能的,并且正是正则表达式为您所做的。您是否尝试自己编写此代码?警告:format1是Format2的一个子集我对正则表达式的使用不多,我现在正在深入研究。我的主要问题是,是否可以比较格式并检索每种格式的值,因为据我所知,正则表达式仅用于比较格式。
function split(str){
  var arr = str.split(' ');
  if(arr.length == 2) return arr;
  return str.split('-');
}