Hen*_*son 4 javascript regex jquery
我有一个带有用户输入文本变量的jQuery函数sel.我像这样显示变量:
jQuery(this).parent().prev().find('.js-trigger-add-tag-target').text(sel);
Run Code Online (Sandbox Code Playgroud)
工作良好.
如果变量以任何这些字符开头或结尾:
.,?!'"
Run Code Online (Sandbox Code Playgroud)
我想剥去那些角色.例如,如果sel是:
'Hello world, josh's car.,'
Run Code Online (Sandbox Code Playgroud)
我想把它剥离到:
Hello world, josh's car
Run Code Online (Sandbox Code Playgroud)
我如何在jQuery/javascript中执行此操作?也许正则表达式?
Tus*_*har 10
您可以使用String#replaceRegEx
var regex = /^[.,?!'"]+|[.,?!'"]+$/g;
text = text.replace(regex, '');
Run Code Online (Sandbox Code Playgroud)
RegEx说明:
var regex = /^[.,?!'"]+|[.,?!'"]+$/g; // Note that you don't need `m` flag here
var resultEl = document.getElementById('output');
document.getElementById('myInput').addEventListener('keyup', function() {
resultEl.innerHTML = this.value.replace(regex, '');
}, false);Run Code Online (Sandbox Code Playgroud)
<input type="text" id="myInput" placeholder="Type something" />
<div id="output">You'll see output here</div>Run Code Online (Sandbox Code Playgroud)
来自OP的评论
如何调整正则表达式,以便在变量以
's?结尾时删除字符?例如,如果变量是John的,那么它将成为John
可以's在字符串的末尾稍微修改RegEx以匹配.
字符类可以是lazy/non-greedy,并's在字符串末尾添加为可选组.
/^[.,?!'"]+|[.,?!'"]*?(?:'s)?$/
Run Code Online (Sandbox Code Playgroud)
添加?在[.,?!'"]*?将比赛懒惰.(?:)在非捕获组和添加?中(?:'s)?将会使's可选.
或者,正如@Daniel Cheung在评论中所说,你也可以使用
/^[.,?!'"]+|(?:[.,?!'"]|'s)+$/
Run Code Online (Sandbox Code Playgroud)
更新:
要删除空格,\s可以在角色类中添加.或者String#trim也可以在'替换后使用.
/^[.,?!'"\s]+|[.,?!'"\s]+$/
^^ ^^
Run Code Online (Sandbox Code Playgroud)
正如指出的评论通过@Casimir等伊波利特,您可以使用^[\W_]+|[\W_]+$以除去开头和末尾的所有特殊字符的字符串.