Đây là giải pháp tốt nhất mà tôi đã tìm thấy để thay thế nhiều lần xuất hiện của tên người dùng twitter.
Regex thực hiện thủ thuật là /(^|[^@\w])@(\w{1,15})\b/
. Tôi đang bắt những gì đứng đằng sau các ký tự @ vì vậy tôi có thể thay thế tên người dùng một cách chính xác. Và tôi đang sử dụng cờ kết hợp toàn cầu (g) để nó sẽ thay thế tất cả các lần xuất hiện. asenovm câu trả lời rất đơn giản, nhưng sẽ không hoạt động trong hầu hết ngữ cảnh nhập của người dùng, vì techexpert đang giải thích trong his comment.
var output,
text = "@RayFranco is answering to @AnPel, this is a real '@username83' but this is [email protected], and this is a @probablyfaketwitterusername",
regex = /(^|[^@\w])@(\w{1,15})\b/g,
replace = '$1<a href="http://twitter.com/$2">@$2</a>';
output = text.replace(regex, replace);
console.log (output);
Đây là đem lại cho tôi những gì tôi mong đợi (thử nghiệm với nút v0.9.1):
@RayFranco được trả lời để @AnPel, đây là một thực tế '@username83' nhưng đây là một @ email .com, và đây là một @probablyfaketwitterusername
này được dựa trên Twitter "specs" for username:
012.351.
Tên người dùng của bạn không thể dài hơn 15 ký tự. Tên thật của bạn có thể dài hơn (20 ký tự), nhưng tên người dùng được giữ ngắn hơn để dễ dàng hơn. Tên người dùng chỉ có thể chứa ký tự chữ và số (chữ cái A-Z, số 0-9) ngoại trừ dấu gạch dưới, như đã lưu ý ở trên. Kiểm tra để đảm bảo tên người dùng mong muốn của bạn không chứa bất kỳ ký hiệu, dấu gạch ngang hoặc dấu cách nào.
Hy vọng điều này sẽ hữu ích.
Đây không phải là bản sao của câu hỏi được liên kết, vì giải pháp được chấp nhận sử dụng "nhìn lại tích cực" hoặc somesuch Javascript (Firefox ít nhất) không hỗ trợ. – bevanb