2013-04-23 65 views
5

Tôi có một chuỗi mà có thể có ký tự đặc biệt, mà tôi phải thay thế bằng gạch nốiHủy bỏ khoảng trắng, dấu chấm và ký tự đặc biệt từ một chuỗi và thay thế bằng gạch nối trong jQuery

var str="123.This is,, :ravi" 

Chuỗi trên nên được chuyển đổi như thế này

var newstr="123-This-is-ravi"; 

tôi đã cố gắng này

function remove(str){ str.replace(/\./g, "-"); } //replaces only dots 
function remove(str){ str.replace(/ /g, "-"); } //replaces only spaces 

Can bất kỳ một hel p tôi làm điều này? Tôi cần phải thay thế các ký tự đặc biệt bằng dấu nối.

Trả lời

13

Bạn should do the regular expression all at once:

"123.This is,, :ravi".replace(/[\. ,:-]+/g, "-") 

Bằng cách đó nó sẽ không tăng gấp đôi lên trên dấu gạch ngang.

Một điều cần lưu ý là nếu giá trị kết thúc bằng dấu chấm (hoặc dấu chấm) hoặc thậm chí bất kỳ khoảng trống nào, thì nó sẽ kết thúc bằng dấu gạch nối.

6

Bạn cũng có thể cố gắng toàn cầu thay thế bất kỳ ký tự phi tự chữ và số và khoảng trắng bằng cách sử dụng chức năng

"123.This is,, :ravi".replace(/[\W_]/g, "-") 

/[\ W _]/g này trên toàn cầu loại bỏ bất kỳ ký tự chữ và số không và không gian màu trắng và có thể được thay thế bằng bất kỳ thứ gì bạn đã chọn sau dấu phẩy,

+1

Đây phải là câu trả lời đúng. không chắc tại sao mọi người lười biếng làm điều này trên bảng điều khiển: "@! # $ DFASDFASD $ #:, '\/ssss" .replace (/ [\ W _]/g, "-") kết quả vào: "--- --DFASDFASD ------- ssss " – Erick

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