查找JavaScript正则表达式语法错误的解决方案

gajydyqb  于 2023-01-16  发布在  Java
关注(0)|答案(3)|浏览(132)

我在JavaScript代码中使用这个正则表达式时遇到语法错误。

const regex = /(\w{2,}+.( ){1,})|(, \w+)/g;

有谁能帮我找出错误吗?
我的目的是删除字符串中名称前面的任何类型的标题和白色沿着名称中的任何点或特殊字符。

失效日期:

DR. Tida.     =>  Tida
prof. Sina.    =>  Sina
2j4z5cfb

2j4z5cfb1#

下面的正则表达式将起作用

(?<=\w+\. ?)\w+
nvbavucw

nvbavucw2#

基本上,+.,+是一个限定符,实际上用于前面的一个或多个字符或组,这是一个问题

+.( )

我试着改变它让它运行:

const regex = /(\w{2,}\.( ){1,})|(, \w+)/g;

我试着修改你的正则表达式,简单地使用单词字符并将它们捕获在一个组中,然后添加可选的点号检查

const regex = /^\w+[.\s]\s*|\.$/g;
const nama = "DR. Tida";
const nama1 = "prof. Sina.";
const regex = /^\w+[.\s]\s*|\.$/g;
console.log(nama.replace(regex,""));
console.log(nama1.replace(regex,""));

刚才提到了灵活的regex,您可以使用$1或$2来使用组,就好像您想要姓氏的名字一样

const regex = /(\w+)\.\s(\w+)(\.?)/;
const nama = "DR. Tida";
const nama1 = "prof. Sina.";

const regex = /(\w+)\.\s(\w+)(\.?)/g;
console.log(nama.replace(regex,"$2"));
console.log(nama1.replace(regex,"$2"));
p4tfgftt

p4tfgftt3#

javascript不支持所有格量词\w{2,}+,但除此之外,你的模式在替换后不会给你想要的结果。
请注意,空格( )不一定要放在圆括号之间才能使其成为一个组,您必须转义点\.才能按字面匹配它,并且{1,}可以写成+
您可能会重复匹配2个或更多单词字符,后面跟着一个点和1+空格,或者匹配1次或多次非单词字符(空格字符除外)。
在替换中使用空字符串。

(?:\w{2,}\.[^\S\n]+)+|[^\w\s]+

参见regex 101 demo

const regex = /(?:\w{2,}\.[^\S\n]+)+|[^\w\s]+/g;
const s = `DR. Tida.
prof. Sina.
DR. prof. Tida.`;

console.log(s.replace(regex, ""));

虽然这部分\w{2,}\.显然可以匹配的不仅仅是标题。
您也可以使用交替方式列出要删除的内容,以使其更具体:

(?:\b(?:DR|prof)\.[^\S\n]+)+|[^\w\s]+

查看其他regex101 demo

相关问题