我想拉的名字「戴維」的中間(但將取決於誰是記錄在不同的)了以下字符串:JavaScript的正則表達式來查找單詞串
登錄:戴夫 - example.com
有關在JS中使用正則表達式的最佳方法的任何想法?
我想拉的名字「戴維」的中間(但將取決於誰是記錄在不同的)了以下字符串:JavaScript的正則表達式來查找單詞串
登錄:戴夫 - example.com
有關在JS中使用正則表達式的最佳方法的任何想法?
我不知道你是怎麼有事情究竟,安裝,但這應該工作:
// This is our RegEx pattern.
var user_pattern = /Logged In: ([a-z]+) - example\.com/i
// This is the logged in string we'll be matching the pattern against
var logged_in_string = "Logged In: Dave - example.com"
// Now we attempt the actual match. If successful, user[1] will be the user's name.
var user = logged_in_string.match(user_pattern)
我的例子是懶惰,只有AZ之間包含字母,因爲我不知道的一個名稱相匹配您的用戶名參數。您可以根據您的需求查找其他RegEx模式。
希望這會有所幫助!
分在結腸處裂開了空間,並採取數組中的第二個項目,如:
var thestring = "Logged In: Dave - example.com";
thestring = thestring.split(":");
thestring = thestring[1].split(" ");
thename = thestring[1]
或者,如果名稱可以包含空格:
var thestring = "Logged In: Dave - example.com";
thestring = thestring.split(":");
thestring = thestring[1].split("-");
var x = thestring[0].length;
if (x > 4) {
var thename = thestring[0].replace(" ", "");
}
else {
thestring = thestring[0].split(" ");
thestring = thestring.split(" ");
thename = thestring[1] + " " + thestring[3];
}
如果該名稱恰好包含空格,將會中斷。 – cHao 2010-10-05 20:41:25
你不」真的需要一個正則表達式。你可以取a .slice()
of這個字符串,得到:
和-
using .indexOf()
的位置。
實施例:http://jsfiddle.net/mkUzv/1/
var str = "Logged In: Dave - example.com";
var name = str.slice(str.indexOf(': ') + 2, str.indexOf(' -'));
編輯:如@cHao,+ 2
指出應該在爲了消除:
後的空間被使用。固定。
那會是+2而不是+1嗎?該空間不應該是名稱的一部分... – cHao 2010-10-05 20:44:52
@cHao - 非常好的一點。我會更新。謝謝。 :o) – user113716 2010-10-05 20:45:42
爲了論證的緣故,使用正則表達式的好處可能在於,它允許將待提取文本嵌入的「邏輯」與嵌入式Javascript代碼分開。因此,如果出於某種原因該「登錄」字符串發生了變化,您所要做的就是修復正則表達式,並且使用它的代碼可能(可能)保持不變。不過,我同意這可能是矯枉過正。 – Pointy 2010-10-05 20:47:15
這工作得很好!謝了哥們。 – dave 2010-10-05 20:52:58