【问题标题】:Why m I getting different results for the same regex splitting function? [duplicate]为什么我对相同的正则表达式拆分函数得到不同的结果? [复制]
【发布时间】:2021-07-03 23:13:03
【问题描述】:

我在这里创建了 2 个函数,它们几乎 100% 相同。唯一的区别是函数的正则表达式字符集的顺序不同。为什么这两个函数会产生不同的输出?

// FUNCTION 1:
function splitify(str) {
  let divs= str.split(/[\." "-,]/)    //order different [inside]
  return divs
}
console.log(splitify("Hello World,I-am code")); 
 //OUTPUT: ["Hello", "World", "I-am", "code"]
//FUNCTION 2
function splitify2(str) {
  let divs = str.split(/[-" ",\.]/);   //order different [inside]
  return divs;
}
console.log(splitify2('Hello World,I-am code'));
//OUTPUT: ['Hello', 'World', 'I', 'am', 'code'];

【问题讨论】:

  • 请注意[\." "-,](或简化的[. "-,])匹配任何"#$%&'()*+,.或空格,而[-" ",\.](或简化的[-" ,.])匹配任何",-.或空格。

标签: javascript regex string


【解决方案1】:

括号内的正则表达式结构略有不同。

例如,当您尝试匹配字符串 -. 时,正则表达式应该是 /-\./,因为 . 代表任何单个字符,并且应该转义以便成为文字。

但是,使用方括号可以让您查找文字,但其中的 - 是不同的。例如,[a-z] 表示从 a 到 z 的 范围,因此您需要对其进行转义才能将其视为文字。

所以,你的语法/[\." "-,]/应该是这样的/[. \-,]/

请注意,. 不需要转义,并且空格与任何其他字符一样,不需要引号。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-10
    • 1970-01-01
    • 2023-03-06
    • 1970-01-01
    相关资源
    最近更新 更多