我有一个可以接受不同格式作为值的属性:
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 block 来确定格式和值。
在这种情况下是否可以使用正则表达式来确定格式并检索每种格式的值?
(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('-');
}
关于javascript - 属性值的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10988121/