如何在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');