如何从给定的正则表达式中删除定界符?
How to remove delimiters from a given RegEx?
我的输入:
str = "User-123"
o/p:
name: User
id: 123
另一个输入:
str = "User 123"// current this works with my regex.
o/p: 同上
其他可能的输入:
str = "User:123"
str = "User/123"
str = "User:123"
代码:
let m = value.match(/([a-z]+\s*\d+)\s+([a-z]+\s*\d+|\d+\s*[a-z]+)/i);
if (m) {return true}
else {return false}
如果我有分隔符,上面的代码 return false 因为它没有找到分隔符的匹配项。对于上面列出的所有情况,我都希望 return 为真。
目前它只删除空格,我怎样才能从这个正则表达式中删除定界符?
您似乎只想拆分非字母数字字符:
let inputs = [
"User:123",
"User/123",
"User:123",
"User-123",
"User 123"
]
for (i of inputs){
let [name, id] = i.split(/[^a-z0-9]/i)
console.log("name:", name, "id:", id)
}
您可以考虑简化您的表达方式。使用捕获组,您可以简单地 add/remove 任何您想要的分隔符。例如,this expression 显示了如何使用捕获组:
([A-z]+)(:|\/)([0-9]+)
图表
此图显示了表达式的工作原理:
代码
此代码展示了如何执行此操作并进行了 100 万次重复的基本基准测试。
repeat = 1000000;
start = Date.now();
for (var i = repeat; i >= 0; i--) {
var string = 'User/123';
var regex = /([A-z]+)(:|\/)([0-9]+)/g;
var match = string.replace(regex, "");
}
end = Date.now() - start;
console.log(match + " is a match ");
console.log(end / 1000 + " is the runtime of " + repeat + " times benchmark test. ");
我的输入:
str = "User-123"
o/p:
name: User
id: 123
另一个输入:
str = "User 123"// current this works with my regex.
o/p: 同上
其他可能的输入:
str = "User:123"
str = "User/123"
str = "User:123"
代码:
let m = value.match(/([a-z]+\s*\d+)\s+([a-z]+\s*\d+|\d+\s*[a-z]+)/i);
if (m) {return true}
else {return false}
如果我有分隔符,上面的代码 return false 因为它没有找到分隔符的匹配项。对于上面列出的所有情况,我都希望 return 为真。
目前它只删除空格,我怎样才能从这个正则表达式中删除定界符?
您似乎只想拆分非字母数字字符:
let inputs = [
"User:123",
"User/123",
"User:123",
"User-123",
"User 123"
]
for (i of inputs){
let [name, id] = i.split(/[^a-z0-9]/i)
console.log("name:", name, "id:", id)
}
您可以考虑简化您的表达方式。使用捕获组,您可以简单地 add/remove 任何您想要的分隔符。例如,this expression 显示了如何使用捕获组:
([A-z]+)(:|\/)([0-9]+)
图表
此图显示了表达式的工作原理:
代码
此代码展示了如何执行此操作并进行了 100 万次重复的基本基准测试。
repeat = 1000000;
start = Date.now();
for (var i = repeat; i >= 0; i--) {
var string = 'User/123';
var regex = /([A-z]+)(:|\/)([0-9]+)/g;
var match = string.replace(regex, "");
}
end = Date.now() - start;
console.log(match + " is a match ");
console.log(end / 1000 + " is the runtime of " + repeat + " times benchmark test. ");