示例字符串:
this!is.an?example
我想匹配:这是一个例子。
我试过了:
<script type="text/javascript">
var string="this!is.an?example";
var pattern=/^\W/g;
alert(string.match(pattern));
</script>
答案 0 :(得分:5)
试试这个:
var words = "this!is.an?example".split(/[!.?,;:'"-]/);
这将创建一个包含每个单词的字符串数组
如果要将其转换为单个字符串,并将单词用空格分隔,则可以调用words.join(" ")
。
编辑:您也可以在\W
(str.split(/\W/)
)上拆分,但这可能会匹配多于您想要的字符。
答案 1 :(得分:3)
我无法理解你为什么要明确地匹配,但如果你的目标是去除所有标点符号,那么这将有效:
var words = "this!is.an?example".split(/\W/);
words = words.join(' ');
\W
将匹配除字母,数字和下划线之外的任何字符。
如果你想在下划线上分开,请使用:
var words = "this!is.an?example_with|underscore".split(/\W|_/);
答案 2 :(得分:0)
如果您只想匹配:
(\w|\.|!|\?)+
答案 3 :(得分:0)
如果要用空格替换所有标点符号,可以这样做:
var str = str.replaceAll([^A-Za-z0-9]," ");
这将替换所有非字母,带空格的数字。
答案 4 :(得分:0)
/^\W/g
表示匹配第一个字符不是字母或数字的字符串
并且字符串"this!is.an?example"
显然不以非字母或非数字开头。
请记住,^
表示整个字符串的开头,而不是您想要匹配的字符串。而且还要记住,资本\ W是所有与小\ w无法匹配的东西。有了这个提醒你可能想要的是:
var string="this!is.an?example";
var pattern=/(\w+)/g; // parens for capturing
alert(string.match(pattern).join(' ')); // if you don't join,
// some browsers will simply
// print "[object Object]"
// or something like it