JS用两个不同的字符分割正则表达式

时间:2017-11-13 13:31:38

标签: javascript regex

我有2个字符串:

"test:header_footer"
"test_3142"

我想获得数组:

array = "test:header_footer".split(":") // ['test', 'header_footer']
array2 = "test_3142".split("_") // ['test', '3142']

我可以将它与正则表达式结合起来得到相同的结果吗?

function(s) {
 retutn s.split(/:|_/) // return bad value
}

因此,如果字符串包含':' - 不会被第二个'_'

分开

2 个答案:

答案 0 :(得分:1)

您可以编写一行方法来检查:并根据该条件进行拆分。

var text = "your:string";
var array = text.split(text.indexOf(":") >= 0 ? ":" : "_"); // ['your', 'string']

var text2 = "your_string";
var array2 = text.split(text.indexOf(":") >= 0 ? ":" : "_"); // ['your', 'string']

var text3 = "your:other_string";
var array3 = text.split(text.indexOf(":") >= 0 ? ":" : "_"); // ['your', 'other_string']

这将检查:,如果找到,则按:拆分,否则按_拆分。

答案 1 :(得分:0)

您可以在字符串上使用includes方法来确定是否存在:。如果用冒号分割String,否则用下划线拆分String。

split_string = s => s.includes(":") ? s.split(":") : s.split("_");

//test strings
let str = "my:string_demo",
  str2 = "my_string_demo",
  str3 = "myString:demo_thing",
  //string function
  split_string = s => s.includes(":") ? s.split(":") : s.split("_");


console.log(
  str, split_string(str)
);
console.log(
  str2, split_string(str2)
);
console.log(
  str3, split_string(str3)
);