javascript - 属性值的正则表达式

标签 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 separated by "-"
ex1: left-diag
ex2: right-diag

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

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

(JavaScript 代码)

最佳答案

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

/^((?=\S*\s)[\w-]+|\w+)[\s-](\S.*)/

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

Example usage :

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/

相关文章:

javascript - 使用html5拖放时滚动

javascript - 创建圆形游戏板 - 旋转不按我想要的方式工作

javascript - Ajax Google map Gmap 未加载 Json Web 服务

java - 编译还是不编译模式?

javascript - 将 Javascript 正则表达式转换为 PHP 正则表达式?

python - Python 正则表达式中的\w 包含哪些(Unicode)数字?

javascript - 如何使用css和js为div中的每个图像制作图像控制按钮?

javascript - 获取与输入类型文件字段关联的标签ID

javascript - 如何将内容设置为背景颜色?

javascript - grunt 将所有 less 文件替换为 css 文件