JavaScript正则表达式替换整个单词

时间:2015-08-27 04:21:48

标签: javascript regex

我有一个变量:

var str = "@devtest11 @devtest1";

我用这种方式用另一个字符串替换@devtest1

str.replace(new RegExp('@devtest1', 'g'), "aaaa")

然而,其结果(aaaa1 aaaa)并非我所期望的。预期结果为:@devtest11 aaaa。我只想替换整个单词@devtest1

我该怎么做?

2 个答案:

答案 0 :(得分:1)

使用字边界 private function getMyResult($stmt) { $result = array(); $metadata = $stmt->result_metadata(); $data['result']=$metadata; echo "<br/>-------------<br/>1"; /*while ($myrow = $data['result']->fetch_assoc()) { print_r($myrow); }*/ $fields = $metadata->fetch_fields(); print_r($metadata); for (;;) { $pointers = array(); $row = new stdClass(); $pointers[] = $stmt; foreach ($fields as $field) { $fieldname = $field->name; $pointers[] = &$row->$fieldname; } call_user_func_array('mysqli_stmt_bind_result', $pointers); if (!$stmt->fetch()) break; $result[] = $row; } $metadata->free(); return $result; } 将搜索限制为字词。

由于\b是特殊字符,因此您需要在单词之外匹配它。

@在字边界\b处断言位置,因为(^\w|\w$|\W\w|\w\W)不包含特殊字符。

\b

如果您的字符串始终以var str = "@devtest11 @devtest1"; str = str.replace(/@devtest1\b/g, "aaaa"); document.write(str);开头,并且您不希望其他字符与

匹配

@

答案 1 :(得分:1)

如果单词被非空格字符包围,

\b将无法正常工作。我建议使用以下方法

var output=str.replace('(\s|^)@devtest1(?=\s|$)','$1aaaa');