Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在分隔符之间选择字符正则表达式javascript_Javascript_Regex_String_Char - Fatal编程技术网

如何在分隔符之间选择字符正则表达式javascript

如何在分隔符之间选择字符正则表达式javascript,javascript,regex,string,char,Javascript,Regex,String,Char,我对javascript中的正则表达式有问题 如何在任何字符中选择| test1 |和| test2 word 1 | word| test1 |测试word|测试2 word 1任何字符|测试 ? 管道字符是分隔符 谢谢这个应该可以: var string = 'word |test1| test word |test2 word 1 any char| test'; var data = string.match(/\|[^\|]*?\|/g) // match strings betwee

我对javascript中的正则表达式有问题

如何在任何字符中选择| test1 |和| test2 word 1 |

word| test1 |测试word|测试2 word 1任何字符|测试

?

管道字符是分隔符

谢谢

这个应该可以:

var string = 'word |test1| test word |test2 word 1 any char| test';
var data = string.match(/\|[^\|]*?\|/g) // match strings between delimiters
    .map(function (str) {
        return str.replace(/\|/g, ''); // remove delimiters
    });

console.log(data); // ["test1", "test2 word 1 any char"]
var str='word | test1 | test word | test2 word 1 any char | test';
警报(JSON.stringify(str.match(/\\\\\[^\\\\]+\\\\\\\\\;/g))
让我们解释一下

  • ()
    是捕获组

  • \\\\\\\
    抓取
    \
    之间的内容,并需要跳过它,因为它在正则表达式中有不同的含义,即或

  • *?
    抓住他们之间的一切,并添加了
    来表示不要贪婪,这样它就不会给我们像
    | a | | b |
    这样的东西,但当它找到第一根管道时,它可以停止并开始搜索下一根管道

  • g
    在末尾意味着获得所有匹配,而不仅仅是第一个匹配;全球搜索

  • /(\\\\\\\\\\\)/g
    一起


好的,我很完美!谢谢:)与jcubic相同的正则表达式,但结尾的m不同:)m
m只是一个错误。不同之处在于map函数删除了分隔符。谢谢,3个人同时使用了一个类似的正则表达式,可能是相同的结果,但语法效果不同,很好的解释:)
"word |test1| test word |test2 word 1 any char| test".match(/(\|.*?\|)/g)