繁体   English   中英

在花括号正则表达式之外拆分字符串的Javascript方法

[英]Javascript method to split string outside curly braces Regex

原始字符串是这样的“嗨,我的名字是{狗|猫}。|嗨,我有一个名字。|{问候|嗨{狗|猫}}”

我怎样才能得到:

  1. 嗨,我的名字是{狗|猫}。
  2. 嗨,我有一个名字。
  3. {问候|嗨{狗|猫}}

使用正则表达式?

由于 javascript 正则表达式无法处理嵌套结构(此处为大括号),因此您必须使用其他方法。

例子:

var str = "Hi my name is {dog|cat}.|Hi I have a name.|{Gretings|Hi {dog|cat}}";
var parts = str.split(/([{}|])/);
var flag = 0;
var results = Array();
var tmp = '';

for (var i = 0; i<parts.length; i++) {
   switch(parts[i]) {
       case '{': flag++; tmp +=parts[i]; break;
       case '}': (flag)&&flag--; tmp +=parts[i]; break;
       case '|': if (flag==0) {
           results.push(tmp);
           tmp='';
           break; }
       default: tmp +=parts[i]; 
   }
}
results.push(tmp);
console.log(results);

也许我无法回答这个问题,但你的意思是这样的:

var str = "Hi my name is {dog|cat}.|Hi I have a name.|{Gretings|Hi {dog|cat}}";

console.info(str.split("|"))返回一个数组

["Hi my name is {dog", "cat}.", "Hi I have a name.", "{Gretings", "Hi {dog", "cat}}"]

但是使用正则表达式?

- - 编辑 - -

作为一个非常简单的版本,你可以这样做(失去句号):

var str = "Hi my name is {dog|cat}.|Hi I have a name.|{Gretings|Hi {dog|cat}}";

var pattern = /[.][|]/;

var re = new RegExp(pattern);

var result = str.split(re);

//var result = str.split(new RegExp(/[.][|]/)); 

console.info('your result: ', result);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM