在JS Regex中匹配不同的长度

时间:2017-01-25 15:58:25

标签: javascript regex

让我用一个例子解释我的查询:

从网站上捕获网页名称。由于设计原因,页面名称可以有不同的长度: 它可以是

  1. 数据1 |数据2 |数据3
  2. 数据1 |数据2 |数据3 |数据4
  3. 数据1 |数据2
  4. 我需要编写一个在所有上述场景中都能实现的正则表达式。我之前的用户共享以下内容:

     /(.*?)\|(.*?)\|(.*?)\|(.*)/gm;
    

    当字符串总是四个组时,上面的效果很好,中间有一个空白。但如果我只有两个值,则正则表达式失败。任何用户都可以指导吗?

2 个答案:

答案 0 :(得分:0)

不确定你的意思,但这有帮助吗?但它只接受字母数字值和空格 /([a-zA-Z 0-9]{1,}\|){1,}[a-zA-Z 0-9]{1,}/g

答案 1 :(得分:0)

预计会减少两个数据字段,最多4个字段

/(?:([^|]*)\|){1,3}([^|]*)/gm;

如果您还只想要一个字段(无管道):

/(?:([^|]*)\|){,3}([^|]*)/gm;

{n,m}表示允许重复n次多次

请注意我使用[^|]*代替.*?的方法,因此我匹配管道|以外的任何内容,我也使用非匹配组 {{1}所以包含管道的组是不可见的,即你可以在

之前获取字段