2010-06-07 27 views
5

Tôi có mọi thứ để tạo các sên từ tiêu đề, nhưng có một vấn đề. RegEx của tôi thay thế dấu cách bằng dấu gạch nối. Nhưng khi người dùng nhập "Hi     vào đó" (nhiều dấu cách), con sên kết thúc bằng "Hi ----- there". Khi thực sự nó nên là "Hi-there".Tạo các Sên từ Tiêu đề?

Tôi có nên tạo cụm từ thông dụng để chỉ thay thế khoảng trắng khi có một ký tự không?

Hoặc có cách nào dễ dàng hơn để thực hiện việc này không?

+0

Vấn đề là tiêu đề được tạo khi đang di chuyển, sử dụng Javascript, để hiển thị cho người dùng biết URL của anh ấy trông như thế nào. Nó dành cho một mạng xã hội. –

+1

JavaScript là một ngôn ngữ lập trình và có thể thực hiện regex. Có chuyện gì vậy? –

Trả lời

2

Nó có thể là đơn giản nhất để gấp lặp đi lặp lại - s thành một - như là bước cuối cùng:

replace /-{2,}/ by "-" 

Hoặc nếu bạn chỉ muốn điều này ảnh hưởng đến không gian, gấp khoảng trống để thay thế (trước khi các bước khác, rõ ràng)

+0

+1: Điều đó hoặc gấp dấu cách làm bước đầu tiên. –

5

Chỉ cần khớp nhiều ký tự khoảng trắng.

s/\s+/-/g 
0

tôi sẽ thay thế [\s]+ với '-'sau đó thay [^\w-] với ''

+0

Điều này làm việc hoàn hảo !! –

+0

Bạn có thể thêm một '[\ -] +' => ''-'' vào cuối để thay thế nhiều -s – Oli

6

tôi sử dụng này:

yourslug.replace(/\W+/g, '-') 

này thay thế tất cả các lần xuất hiện của một hay nhiều phi tự chữ và số ký tự với một dấu gạch ngang đơn.

0

Bạn có thể muốn cắt chuỗi đầu tiên, để tránh dấu gạch nối hàng đầu và dấu gạch ngang.

function hyphenSpace(s){ 
    s= (s.trim)? s.trim(): s.replace(/^\s+|\s+$/g,''); 
    return s.split(/\s+/).join('-'); 
} 
Các vấn đề liên quan