正则表达式来处理标点符号和文本改进
Regex to deal with punctuation and text improvement
我试图避免我们应用程序上的不良行为,它需要我从不良使用中清除一些字符串。
假设我有这个字符串
str = "This is a very bad BEHAVIOR !!!Don't you think So ????";
我需要应用3条规则:- 无喊叫模式(不是全部大写)- 删除标点符号前的空格,并在标点符号后添加一个空格- 删除所有重复的标点符号
所以我的字符串应该是
str = "This is a very bad behavior! Don't you think so?"
我在stackoverflow上发现了一个示例代码,可以在标点符号后添加一个空格:
str.replace(/[,.!?:;](?='S)/g, '$& ');
但这并不能帮助我删除标点符号前的空格
帮助找到合适的正则表达式将不胜感激
这
似乎有效 -
str.replace(/'s*([,.!?:;])[,.!?:;]*'s*/g,'$1 '). //This removes all the punctuations
replace(/(?:^|[^a-z])([A-Z]+)(?:[^a-z]|$)/g,function(v){return v.toLowerCase();}). //Upper case to lower case
replace(/'s*$/,"") //Trimming the right end
OUTPUT:
"This is a very bad behavior! Don't you think So?"
编辑:
关于使用小数点的情况(如大小写 - 'This is 14.5 degree'
),使用负前瞻(如这样 - (?!'d+)
)应该有效。
例如-
str = 'This is 14.5 degree'
str.replace(/'s*(?!'d+)([,.!?:;])[,.!?:;]*(?!'d+)'s*/g,'$1 '). //This removes all the punctuations
replace(/(?:^|[^a-z])([A-Z]+)(?:[^a-z]|$)/g,function(v){return v.toLowerCase();}). //Upper case to lower case
replace(/'s*$/,"") //Trimming the right end
OUTPUT:
"This is 14.5 degree"
相关文章:
- 如何使用jquery在填充自动完成的值后使文本框只读
- 使用Clipboard.js复制span文本
- 使用JS如何动态更改显示的html文件中的文本背景颜色
- 用程序搜索JQuery数据表中的文本
- jQuery匹配JSON对象的部分文本
- onkeyup无法动态创建多个文本区域
- 如何在下面的ES6循环中获得前面的文本
- 将输入字段中的文本提交到我的数据库,同时将其添加到我的列表中
- 让文本输入幻灯片显示输入时的新文本输入?然后向后滑动
- 借助asp.net验证或java脚本对多个文本进行验证
- 无法在ajaxStart中更改跨度文本
- 高亮显示时编辑文本大小和颜色
- jquery中的文本框验证
- Javascript,有没有一种方法可以将数组写成没有逗号或空格的单个文本字符串
- Sails.js:同时发布文本输入和一个文件
- 当鼠标悬停在文本中的单词上时显示警报
- 是否有任何方法可以使用jQuery替换在数组中定义值的文本
- 将纯文本URL转换为可单击链接
- 具有搜索文本的功能,不能很好地处理标点符号/符号.Jquery/Jquery mobile.
- 正则表达式来处理标点符号和文本改进