如何在javascript中使用String.match()

如何在javascript中使用String.match(),javascript,Javascript,我这里有这个代码: <!DOCTYPE html> <html> <body> <p id="demo">Display the result here.</p> <input type = "text" value = "ood" id = "txt1"/> <script> var myString = "How much wood could a wood chuck chuck"; var myW

我这里有这个代码:

<!DOCTYPE html>
<html>
<body>

<p id="demo">Display the result here.</p> 
<input type = "text" value = "ood" id = "txt1"/>
<script>


var myString = "How much wood could a wood chuck chuck";
var myWord = document.getElementById("txt1").value;   // ood
var myPattern = /.myWord/;        // I want this to be /.ood/
var myResult = myString.match(myPattern);

document.getElementById("demo").innerHTML = myResult;

</script>

</body>
</html>

在此处显示结果。

var myString=“一块木头能扔多少木头”; var myWord=document.getElementById(“txt1”).value;//奥德 var myPattern=/.myWord/;/我希望这是/.ood/ var myResult=myString.match(myPattern); document.getElementById(“demo”).innerHTML=myResult;
现在我想在这里做的是,我想在
myString
中匹配
txt1
的值,即
ood

但是像这样将变量
myWord
放入
myPattern
/.myWord/
将不起作用。我需要帮助。非常感谢

更新:

我做了答案中的所有事情,但它返回
wood,wood
,而不是
wood
,我只想得到1个匹配项。就像使用示例
/.ood/
-这只返回1个匹配项。请帮忙


还有,我如何通过在输入文本中只包含
od
来获取单词
wood
。我只是想用它来搜索..

创建一个Regexp对象,如

new RegExp('.ood','g');
喜欢

var searchstring='ood' // this is the one you get in a variable ...

var myString = "How much wood could a wood chuck chuck";
var myPattern=new RegExp('.'+searchstring,'gi');
var myResult = myString.match(myPattern);

可以使用以下对象将字符串用作正则表达式:

在您的情况下,只需将
RegExp
中的第二个参数从
g
更改为
m
(这意味着对多行每行进行一次匹配,但在本例中,字符串仅为一行)。用于从
“ood”
“od”
“d”
或其他情况中查找单词
“wood”
。您可以这样做:

var myPattern = new RegExp("\\b\\w+"+myWord+"\\b",'m'); 
注意我在下面的评论中有一个解决方案,但是这个更好

项目
\\b\\b
平均值。基本上确保它与单个单词匹配。然后
\\w
表示任何有效的“单词字符”。因此,regexp的总体意思是(使用
myWord=“od”
):

|单词边界|+(1个或多个单词字符)+“od”+|单词边界|

这将确保它匹配字符串中的任何单词,而不是以字符
“od”
结尾。或者在更一般的情况下,您可以:

var myPattern = new RegExp("\\b\\w*"+myWord+"\\w*\\b",'m'); 

请给出一些例子好吗?字符串
ood
应该是动态的,从文本框值开始,请参见上面我的评论。您还需要通过前面的\,在regexWell中转义
,是的,然后也这样做;-)BuI我知道OP实际上是想寻找一个“任意字符”,而不是实际的点。谢谢,它工作了,实际上找到了匹配项,但我只想得到一个匹配项。谢谢。使用
RegExp
构造函数语法作为
var myPattern=new RegExp('\.'+myWord,'gi')谢谢,它成功了,而且确实找到了匹配项,但我只想得到一个匹配项。谢谢。@wwdell在这种情况下,您可以使用
RegExp('.+myWord,'m')
在这种情况下获取单个匹配项。
m
表示对每一行进行匹配。谢谢!这真的奏效了。我还更新了我的问题。当输入文本的值为
od
时,它应该找到
wood
,但它无法匹配myString:(@wwwDELL在上面编辑了我的注释,并说明了发生这种情况的原因。例如,您可以通过执行
newregexp('.{1,2}'+myWord,'g')来解决这个问题
,意思是在
od
@wwwDELL之前可以有1到2个字符,是的,但是它有一些开销。你可以将字符串按单词拆分。然后使用
new RegExp(“.+”+myWord+“$”,'g');
意思是:1个或多个字符+每个单词以“od”结尾。。可能有更好的方法来实现这一点。
var myPattern = new RegExp("\\b\\w*"+myWord+"\\w*\\b",'m');