Javascript方法拆分字符串外的花括号Regex
Javascript method to split string outside curly braces Regex
原始字符串是这样的"嗨,我的名字是{狗|猫}。嗨,我有个名字。|{问候|嗨{狗|猫}}"
如何到达:
- 你好,我的名字是{狗|猫}。
- 你好,我有名字了。
- {Gretings |嗨{狗|猫}}
使用正则表达式?
由于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}}"]
,但与RegExp?
---- EDIT ----
作为一个非常简单的版本,你可以这样做(去掉句号):
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);
相关文章:
- 为什么javascript替换方法(没有regex)在angularjs表达式中不起作用来删除 
- 在附加方法jquery validate中为特殊字符使用regex
- JS-regex,我怎样才能把它变成一个 replace() 方法
- Javascript Regex?或其他方法来验证正确的文本输入
- regex没有方法测试
- Javascript RegEx操作方法
- 检测regex中多次出现非空白的正确方法是什么
- 生成一个与Javascript字符串匹配的Regex对象.解释方法
- 在.replacement()方法中使用regex
- 找到一种方法来查找没有't匹配Regex是javascript
- Javascript regex test()错误:对象没有方法'测试'
- 使用JavaScript和Regex从文件中获取XML标记的最有效方法
- 有没有一种特定的方法可以在JavaScript RegEx匹配中检索组
- new Reg()有没有一种方法可以让regex表达式只接受整数和可选的度量单位px
- 是否有一种方法只匹配顶级括号与regex
- Regex——为什么在使用新的RegExp方法时这个模式不能工作?
- *|TAG_NAME|*的RegEx匹配方法
- 使用回调和RegEx方法将JavaScript代码转换为c#中的等效代码
- JQuery validate - pattern规则不如自定义regex方法好用
- 使用Regex vs include()方法与Switch语句