在char'之后更换 - '或者' /'比赛

时间:2018-03-28 18:16:37

标签: javascript regex replace

我试图在匹配字符后执行正则表达式替换,例如3674802/3或637884-ORG

id可以成为其中之一,在这种情况下,如何在匹配后使用regex replace匹配删除?

输入var id = 3674802/3 or 637884-ORG;

预期输出3674802 or 637884

5 个答案:

答案 0 :(得分:3)

你可以使用sbustring方法只接受字符串的一部分直到'/'或' - ':

var input = "3674802/3";
var output = input.substr(0, input.indexOf('/')); 

var input = "637884-ORG";
var output = input.substr(0, input.indexOf('-')); 

    var input = "3674802/3";
    if (input.indexOf('/') > -1)
    {
      input = input.substr(0, input.indexOf('/')); 
    }
    console.log(input);
    
    var input = "637884-ORG";
    if (input.indexOf('-') > -1)
    {
      input = input.substr(0, input.indexOf('-'));
    }
    console.log(input);

答案 1 :(得分:1)

您可以使用具有前瞻断言的正则表达式

/(\d+)(?=[/-])/g

var id = "3674802/3"
console.log((id.match(/(\d+)(?=[/-])/g) || []).pop())
id = "637884-ORG"
console.log((id.match(/(\d+)(?=[/-])/g) || []).pop())

答案 2 :(得分:0)

你不需要正则表达式。正则表达式比你需要的更强大。

您可以使用String的{​​{3}}和substring方法。

indexOf接受一个字符/子字符串并返回一个整数。整数表示字符/子字符串从哪个字符位置开始。

substring接受起始位置和结束位置,并从开始到结束返回新字符串。

如果难以让这些工作;然后,随时要求更多澄清。

答案 3 :(得分:0)

您可以使用以下脚本:

var str = '3674802/3 or 637884-ORG';
var id = str.replace(/(\d+)[-\/](?:\d+|[A-Z]+)/g, '$1');

有关正则表达式的详细信息:

  • (\d+) - 一个数字的序列,第一个捕获组。
  • [-\/] - 减去斜杠。因为/是正则表达式分隔符, 它必须用反斜杠进行转义。
  • (?: - 启动非捕获组,替代方案的“容器”。
  • \d+ - 第一种选择 - 一系列数字。
  • | - 替代分隔符。
  • [A-Z]+ - 第二种选择 - 一系列字母。
  • ) - 非捕获组的结束。
  • g - 全球选项。

要替换为$1的表达式 - 用。替换整个发现 第一个捕获组。

答案 4 :(得分:0)

感谢所有回答我问题的人,对解决我的问题非常有帮助。

以下是我建立的答案:



var str = ['8484683*ORG','7488575/2','647658-ORG'];
    for(i=0;i<str.length;i++){
    var regRep = /((\/\/[^\/]+)?\/.*)|(\-.*)|(\*.*)/;
    var txt = str[i].replace(regRep,"");
    console.log(txt);
    }
&#13;
&#13;
&#13;