当我搜索某些内容时,我在这个网站上找到了一个已回答的问题。其中2个答案包含
/([^.]*)\.(.*)/
。该问题位于查找和替换jquery。我是javascript的新手,所以我想知道这是什么意思?谢谢。/([^.]*)\.(.*)/
。该问题位于查找和替换jquery。我是javascript的新手,所以我想知道这是什么意思?谢谢。/([^.]*)\.(.*)/
让我们来解构一下。开头和结尾的斜杠是分隔符,标记正则表达式的开始和结束。([^.]*)
。括号只是将字符串分组在一起的。方括号表示"字符组",意味着该组中的任何字符都可以接受其位置。但是,第一个字符为^
的组被否定,这将其意义倒转。由于否定之外的唯一字符是句点,因此匹配的是不是句点的单个字符。在方括号之后是*
(星号),这意味着方括号可以匹配零次或多次。\.
。这是转义的句点。正则表达式中的句点具有特殊含义(除非在字符组中或已转义)。它匹配文本中的一个字面上的句点。
(.*)
是一个新的括号子组。这次,句点匹配任何字符,星号表示它可以重复多次。([^.]*)
: 匹配所有除了句点(.)之外的字符。
[2] \.
: 匹配一个句点。
[3] (.*)
: 匹配任意字符。这是一个正则表达式,大致搜索不包含句点的字符串,后跟一个句点,然后是包含任何字符的字符串。
这是一个带有一些高级用法的正则表达式。
考虑一个简化版本:/[^.]*\..*/
,它与上面的表达式相同,但没有括号。这将匹配任何至少有一个点的字符串。当添加括号并进行匹配时,变量\1
和\2
将包含来自括号的匹配部分。第一个变量将包含第一个点之前的任何内容。第二个变量将包含第一个点之后的所有内容。
示例:
input: foo...bar
\1: foo
\2: ..bar
input: .foobar
\1:
\2: foobar
这是一个正则表达式。如果正确使用,正则表达式是非常强大的工具。
这个特定的正则表达式从类似于“file.ext”的字符串中提取文件名和扩展名。
.textfile
(第一部分可选) - Amarghosh.
也可以匹配。而 ...........
也会在第一个 .
上匹配。 - eyelidlessnessMakefile
(扩展名可选)(但是正则表达式不会匹配它)。 - Thanatos这个正则表达式生成两个匹配的表达式,可以被检索。
这两部分是第一个点之前的字符串(可能为空),和第一个点之后的字符串(可能包含其他点)。
输入的唯一限制是它至少包含一个点。与其他答案相反,它将匹配“。”,但检索到的组将为空。
在我看来,/.*\..*/g
会做同样的事情。
const senExample = 'I am test. Food is good.';
const result1 = senExample.match(/([^.]*)\.(.*)/g);
console.log(result1); // ["I am test. Food is good."]
const result2 = senExample.match(/^.*\..*/g);
console.log(result2); // ["I am test. Food is good."]