我尝试在我的javascript代码中设置正确的正则表达式,但我对此有点困惑。我的目标是在字符串中找到“旋转”的任何出现。这应该很简单,但事实上我失去了,因为我的“旋转”可以有多个结局!以下是我想用正则表达式找到的一些例子:
“旋转”一词可以在我的字符串的开头或结尾处,或者甚至在中间用空格与其他单词隔开。正则表达式将用于搜索和替换功能。
有人能帮助我吗?
编辑:到目前为止我尝试了什么(可能缺少其中一些):
/\wrotate.*/
/rotate.\w*/
/rotate.\d/
/\Srotate*/
我还没有完全理解正则表达式的机制。
答案 0 :(得分:2)
尝试this regex作为开始。它将返回所有出现的"旋转"数字(正数或负数)跟随"旋转"。
的字符串/(rotate)([-]?[0-9]*)/g
以下是示例代码
var aString = ["rotate5","rotate180","rotate-1","some text rotate-270 rotate-1 more text rotate180"];
for (var x = 0; x < 4; x++){
var match;
var regex = /(rotate)([-]?[0-9]*)/g;
while (match = regex.exec(aString[x])){
console.log(match);
}
}
&#13;
在此示例中,
match[0]
给出整个匹配(例如rotate5)
match[1]
提供文字&#34;旋转&#34;
match[2]
在&#34;旋转&#34;
如果字符串中有多个旋转蜇,这将全部返回
答案 1 :(得分:1)
如果您只是需要知道“字”是否在字符串中,那么/rotate/
就可以了。
但是如果你想要在@mseifert之前或之后出现什么匹配
如果您只想将“旋转”一词替换为另一个
你可以使用字符串方法String.replace
像var str = "i am rotating with rotate-90"; str.repalace('rotate','turning')'
为什么你的正则表达式不起作用?
/\wrotate.*/
表示字符串必须以caracter [a-zA-Z0-9_]开头,后跟rotate和另一个可选字符
/rotate.\w*/
meanse rotate必须后跟一个字符,其他字符必须是n ...............
答案 2 :(得分:1)
使用您的说明:
“旋转”一词可以在我的字符串的开头或结尾处,或者甚至在中间由其他单词的空格分隔。正则表达式将用于搜索和替换功能。
这个正则表达式应该做的工作:
const regex = /(^rotate|rotate$|\ {1}rotate\ {1})/gm;
您可以通过以下网站了解有关正则表达式的更多信息: