正则表达式Javascript在标点符号后添加空格
目前我正在使用正则表达式Javascript在标点符号后添加空格,javascript,regex,Javascript,Regex,目前我正在使用replace(/\s*([,.!?:;])[,.!?:;]*\s*/g,“$1”)在标点符号后添加空格。但是如果这个句子包含三个点,它就不起作用了 示例文字:“你好,今天是美好的一天……但明天不是。” 预期输出:“你好,今天是美好的一天……但明天不是。” 给出: “你好,今天是美好的一天。但明天不是。” 请告诉我可以使用什么正则表达式,以便获得预期的输出。您应该将所有连续标点字符匹配到组1中,而不仅仅是第一个字符。此外,在字符串末尾排除标点符号的匹配也是有意义的 你可以用 tex
replace(/\s*([,.!?:;])[,.!?:;]*\s*/g,“$1”)
在标点符号后添加空格。但是如果这个句子包含三个点,它就不起作用了
示例文字:“你好,今天是美好的一天……但明天不是。”
预期输出:“你好,今天是美好的一天……但明天不是。”
给出:
“你好,今天是美好的一天。但明天不是。”
请告诉我可以使用什么正则表达式,以便获得预期的输出。您应该将所有连续标点字符匹配到组1中,而不仅仅是第一个字符。此外,在字符串末尾排除标点符号的匹配也是有意义的 你可以用
text.replace(/\s*([,.!?:;]+)(?!\s*$)\s*/g,“$1”)
此外,它还可以方便地.trim()
查看结果。看
详细信息
-0个或更多whitspace字符\s*
-第1组(([,.!?:;]+)
):一个或多个$1
,,
,
代码>,
,?
或:
代码>
-如果不立即后跟零个或多个空格字符,然后是字符串结尾(?!\s*$)
-0个或更多whitspace字符\s*
let text=“你好,今天是美好的一天……但明天不是。”;
text=text.replace(/\s*([,.!?:;])+(?!\s*$)\s*/g,$1');
console.log(文本)代码>为什么要删除除第一个标点以外的所有连续标点?尝试一下/\s*([,.!?:;]+)\s*/g
。看到了吗?你想捕捉最后一个标点符号吗?这将在行尾添加一个空格。可能在后面使用一些修剪函数,或者添加到模式本身。是的,将该条件添加到上面的正则表达式很简单:/\s*([,.!?:;]+)(?!\s*$)\s*/g
。请详细解释您的正则表达式要求。@WiktorStribiżew有效,谢谢!
let text = "Hello,today is a beautiful day...But tomorrow is,not.";
text = text.replace(/\s*([,.!?:;])[,.!?:;]*\s*/g, '$1 ')