8

我想测试一个字符串是否可以匹配 javascript 中的模式

问题是中间模式中有一个随机字符串:“account/os/ some_random_string /call_back”

所以如下所示的字符串将匹配

var mystring = "account/os/1234567/call_back"

谢谢

4

2 回答 2

20

你想要一个以 开头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)
于 2013-08-01T05:19:53.537 回答
2

这要看情况。如果您想要 account/os/ 和 /call_back 之间的每个字符,请使用以下命令:

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

匹配将返回一个包含 2 个元素的数组,第一个包含整个匹配项,第二个包含组 (.*)。如果您完全确定那里至少有一个字符,请将 * 替换为 +。

如果您对必须收集的文本有更具体的了解,这里有一些 .(点匹配几乎所有内容)的替换:

[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/

于 2013-08-01T05:27:44.303 回答