从用户输入文本字符串中跳过特殊字符,并在Javascript中的每个单词后添加连字符

时间:2016-04-24 05:46:46

标签: javascript jquery

Html:

    <input type="text" placeholder="Enter page title name" id="text" style="width: 500px;" />
<br />
<br />
<input type="button" value="Click Me" id="button" />

USER INPUT ::&#34;这是拉姆的笔吗? &#34; (没有双引号)

当用户点击按钮时,输入应为..

预期::&#34;是这个公羊笔&#34; (没有双引号)

主要目的是在每个单词之间添加连字符( - )并跳过其他特殊字符。

可以在Javascript中使用吗?

3 个答案:

答案 0 :(得分:1)

使用这段代码。

$('#button').on('click', function() {

    var str = $('#text').val();

  $('#text').val((str.replace(/[^a-z0-9\s]/gi, '').trim().replace(/[_\s]/g, '-')));
})

replace(/[^a-z0-9\s]/gi, '')将字符串过滤为字母数字字符。 replace(/[_\s]/g, '-')用连字符替换所有下划线和空格。

正则表达式的来源:RegEx for Javascript to allow only alphanumeric

<强> JSFIDDLE

答案 1 :(得分:0)

您可以使用2个替换语句

str.replace(/\s+/g, "-").replace(/[^a-zA-Z\d]+/g, "")

答案 2 :(得分:0)

另一种方法是选择没有特殊字符的所有文本(以及空格),然后用-替换空格

&#13;
&#13;
$('#button').on('click', function() {

    var str = $('#text').val();

  $('#text').val((str.match(/[a-zA-Z0-9\s]+/gi).join('').trim().replace(/\s+/g, '-')));
})
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" placeholder="Enter page title name" id="text" style="width: 500px;" />
<br />
<br />
<input type="button" value="Click Me" id="button" />
&#13;
&#13;
&#13;