我想测试一个字符串是否可以匹配javascript中的模式
问题是中间有一个随机字符串 模式:“account / os / some_random_string / call_back”
所以下面的字符串将匹配
var mystring =“account / os / 1234567 / call_back”
感谢
答案 0 :(得分:11)
你想要一个以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)
答案 1 :(得分:2)
嗯,这取决于。如果你想要帐号/ 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/