删除字符串中单词开头和结尾的标点符号
Remove punctuation from beginning and end of words in a string
我有一个字符串,我想从单词的开头或结尾删除任何- ,( ,) ,& ,$ ,# ,! ,[ ,] ,{ ,} ," ,'
。如果在单词之间,请忽略它们。
下面是一个例子:
var $string = "Hello I am a string, and I am called Jack-Tack!. My -mom is Darlean.";
我希望上面的文本在正则表达式之后是这样的:
console.log("Hello I am a string and I am called Jack-Tack My mom is Darlean");
您可以使用以下事实:正则表达式中的'b
总是在单词边界处匹配,而'B
仅在没有单词边界的地方匹配。您想要的是,仅当它的一侧有单词边界而另一侧没有时才删除这组字符。这个正则表达式应该做:
var str = "Hello I'm a string, and I am called Jack-Tack!. My -mom is Darlean.";
str = str.replace(/'b[-.,()&$#!'[']{}"']+'B|'B[-.,()&$#!'[']{}"']+'b/g, "");
console.log(str); // Hello I'm a string and I am called Jack-Tack My mom is Darlean
这是我刚刚创建的一个。这也许可以简化,但它是有效的。
"Hello I am a string, and I am called Jack-Tack!. My -mom is Darlean."
.replace(/(?:['(')'-&$#!'[']{}'"'','.]+(?:'s|$)|(?:^|'s)['(')'-&$#!'[']{}'"'','.]+)/g, ' ')
.trim();
将此正则表达式替换为空字符串
/(?<='s)[^A-Z]+?(?='w)|(?<='w)[^a-z]*?(?='s|$)/gi
//Explanation:
/
(?<='s)[^A-Z]+?(?='w) //Find any non-letters preceded by a space and followed by a word
| //OR
(?<='w)[^a-z]*?(?='s|$) //Any non-letters preceded by a work and followed by a space.
/gxi
相关文章:
- 遍历 JSON 对象并检查 URL 是否以某个值结尾
- 如何生成保留标点符号的简单字谜
- 删除LINES开头和结尾的空白
- Angular http.get没有'我不喜欢在开头和结尾加方括号的文本文件
- 检查整数是否以0结尾
- jQuery-选择以..开头和结尾的元素..但省略了具体名称
- Regex:匹配以“AM”结尾的单词(不区分大小写比较)
- 渐弱入/渐弱音频,指向歌曲的开头和结尾
- 匹配由单个空格分隔的单词,单词的开头或结尾不能有空格
- 创建属性值数组,其中属性名称以特定字符串结尾
- 如何删除字符串开头和结尾的换行符
- jquery选择以某事开头并以某事结尾
- 如何按从当前单词到段落中该句子(.)结尾的范围选择文本
- 用于删除字符串中字符开头到结尾的正则表达式
- 使用 JavaScript split 来包含单词,标点符号与 span 但忽略 HTML
- AngularJS json.parse 在 json 数据的第 1 行第 1 列处意外的数据结尾
- AJAX 请求调用以错误结尾
- 从结尾或开头修剪字符串
- Regex以捕获后面跟有非标点符号的引号
- 删除字符串中单词开头和结尾的标点符号