我有一个变量:
var str = "@devtest11 @devtest1";
我用这种方式用另一个字符串替换@devtest1
:
str.replace(new RegExp('@devtest1', 'g'), "aaaa")
然而,其结果(aaaa1 aaaa
)并非我所期望的。预期结果为:@devtest11 aaaa
。我只想替换整个单词@devtest1
。
我该怎么做?
答案 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');