2011-09-01 36 views

Trả lời

27

Regular Expression với trận đấu

với kiểm tra an toàn

var str="[email protected]"; 
var nameMatch = str.match(/^([^@]*)@/); 
var name = nameMatch ? nameMatch[1] : null; 

viết như một dòng

var name = str.match(/^([^@]*)@/)[1]; 

Regular Expression với thay

với kiểm tra an toàn

var str="[email protected]"; 
var nameReplace = str.replace(/@.*$/,""); 
var name = nameReplace!==str ? nameReplace : null; 

viết như một dòng

var name = str.replace(/@.*$/,""); 

Chia Chuỗi

với kiểm tra an toàn

var str="[email protected]"; 
var nameParts = str.split("@"); 
var name = nameParts.length==2 ? nameParts[0] : null; 

viết như một dòng

var name = str.split("@")[0]; 

thử nghiệm hiệu suất của mỗi ví dụ

JSPerf Tests

+0

Không chắc về ngữ nghĩa javascript, nhưng tôi sẽ sử dụng mô hình này:/. + (? = @)/ – Xarylem

+0

Một cách chức năng: 'str.split (" @ "). Giảm (user => người dùng) ' – schabluk

+0

@epascarello - Tại sao bạn không (hoặc bất kỳ ai khác ở đây) sử dụng một' str.substring đơn giản (0, str.indexOf ("@")) '? Vì bạn có danh tiếng gấp 65 lần như tôi, tôi chắc chắn rằng tôi đang thiếu một cái gì đó, chỉ cần không biết những gì .. – myfunkyside

Các vấn đề liên quan