我试图在匹配字符后执行正则表达式替换,例如3674802/3或637884-ORG
id可以成为其中之一,在这种情况下,如何在匹配后使用regex replace匹配删除?
输入var id = 3674802/3 or 637884-ORG;
预期输出3674802 or 637884
答案 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;