JavaScript正则表达式匹配(中间的随机字符串)

10
我想在JavaScript中测试一个字符串是否能够匹配一个模式。
问题是在模式中有一个随机的字符串 模式: "account/os/some_random_string/call_back"
因此,像下面这样的字符串将匹配: var mystring = "account/os/1234567/call_back"
谢谢

2
我不确定你想要什么。你是在寻找类似于/account\/os\/(.*)\/call_back/这样的东西吗? - John Dvorak
2个回答

22
你需要一个以account/os/开头并以/call_back结尾的正则表达式,这是一个例子:
/^account\/os\/.*\/call_back$/

.*将匹配任何随机字符串(包括空字符串)。如果您想对随机字符串设置最小长度,则可以更改*

.*    : 0 or more characters
.+    : 1 or more characters
.{n,} : n or more characters (replace n with an actual number)

2

好的,这取决于情况。如果您想要在account/os/和/call_back之间的每个字符,请使用以下内容:

var randomStr = mystring.match(/account\/os\/(.*)\/call_back/)[1];

这个匹配会返回一个包含两个元素的数组,第一个元素是整个匹配,第二个元素是(.*)组。如果你确定至少有一个字符存在,将 * 替换为 +。

如果你对要收集的文本有更具体的了解,以下是一些可以替换 .(点几乎匹配所有内容)的内容:

[A-z] for any of A, B, .. , Y, Z, a, b, .. , y, z
[0-9] for any digit

您可以混合使用它们并制作花式效果,例如:

[A-Ea-e0-36-8]

所以,你的模式可能看起来像这样:

/account\/os\/([A-Ea-e0-36-8]*)\/call_back/

您的示例中有一个数字,因此您可能正在寻找以下内容:

/account\/os\/([0-9]*)\/call_back/

或者

/account\/os\/(\d*)\/call_back/

这是同一件事。

希望能帮到你。

编辑:JS的答案没有jsfiddle吗?http://jsfiddle.net/U2Jhw/


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接