正则表达式提取字符串

时间:2014-07-21 12:49:23

标签: regex

我有一个字符串

Celcom10 | 105ABCD | Celcom

这是我的正则表达式(\s\w+)但是这也捕获了空白区域。

如何编写正则表达式以获取中间值105ABCD 排除管道和空格?

我只需要一个regex pattern,因为它将被插入一个图表中,该图表将在自动化测试中执行。

3 个答案:

答案 0 :(得分:3)

你也可以尝试这个

[^ |]+

答案 1 :(得分:3)

如果您将字符串拆分为:\s*[|]\s*

,这非常简单明了

<强>解释

  1. \s*匹配可选空格
  2. [|]匹配文字管道,|表示正则表达式中的但如果您将其放入字符类[]中则会丢失它意
  3. \s*匹配可选空格
  4. 示例代码:

    input = 'somenickname | 1231231 | brand';
    output = input.split(/\s*[|]\s*/);
    
    // Printing
    for(i = 0, l = output.length;i < l;i++){
        document.write('index: ' + i + ' & value: ' + output[i] + '<br>');
    }
    

    <强>输出:

    index: 0 & value: somenickname
    index: 1 & value: 1231231
    index: 2 & value: brand
    

答案 2 :(得分:2)

  

我需要一个正则表达式(或者3个)来提取所有三个单词/数字(不包括空格和管道)

从索引1获取匹配的组。此处括号(...)用于捕获组。

(\w+)

Live Demo

\w       match any word character [a-zA-Z0-9_]

查看sample code