当前位置: 首页 > 知识库问答 >
问题:

为什么同一个regex分裂函数会得到不同的结果?[副本]

谷彦君
2023-03-14

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

// 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'];

共有1个答案

沈英勋
2023-03-14

括号内的regex结构略有不同。

例如,当您试图匹配字符串-.时,regex应该是/-\./,因为.表示任何单个字符,并且应该转义为文字。

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

因此,您的语法/[\.“-,]/应该类似于/[.\-,]/

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

 类似资料:
  • 问题内容: 首先,我的Java版本: 输出为: 31 -117 8 0 0 0 0 0 0 -53 72 -51 -55 -55 47 -49 47 -54 73 1 0 -83 32 -21 -7 10 0 0 0 然后是Go版本: 输出: 31 139 8 0 0 9 110 136 0 255 202 72 205 201 201 47 207 47 202 73 1 0 0 0 255 2

  • 我试图做一个函数,返回数组的长度,但函数总是返回8

  • 问题内容: 为什么需要添加“ L”字母以获得正确的长值?还有什么其他价值呢? 问题答案: 你的第一个值实际上是一个long(因为是,并且是,所以带值的值的结果就是一个long值。 但是第二个值是一个整数(因为你仅将一个值与一个值混用。所以结果将是一个整数。现在,所获得的结果超出了整数的实际范围。因此,在分配给该变量之前,被截断以适合有效的整数范围。 查看以下打印语句: 当你运行上面的代码时: 输出

  • 问题内容: 以下代码可以在Swift Playground中运行: 这是打印在我的Mac上的结果: 为什么两次打印的结果不同?更有趣的是,当我更改 bbb 的函数签名使其与 aaa相同时 ,两次打印的结果相同。如果在这两个函数调用中使用 全局var 而不是 a.key ,则两次打印的结果是相同的。有谁知道为什么会发生这种奇怪的行为? 问题答案: 为什么两次打印的结果不同? 因为对于每个函数调用,S

  • 我正在java中执行以下代码,但对于数学上应该是相同的数字,我得到了两个不同的答案。 输出:

  • 我希望以下Java代码将字符串拆分为三个项: 然而,我只得到两件。 我必须承认,我并没有深入分析这一点,但对我来说,这似乎违反直觉。Python和C#都在Python中生成三项,如下所示: 在C#中: 我错过了什么? 这是Java 1.8.0\u 101。