2011-02-04 25 views

Trả lời

11
^(?!-)(?!.*--)[A-Za-z0-9-]+(?<!-)$ 

Giải thích:

^    # Anchor at start of string 
(?!-)   # Assert that the first character isn't a - 
(?!.*--)  # Assert that there are no -- present anywhere 
[A-Za-z0-9-]+ # Match one or more allowed characters 
(?<!-)  # Assert that the last one isn't a - 
$    # Anchor at end of string 
+0

Xin lỗi, điều này cũng không khớp với abd- –

+0

@Sachin: Vì nó không nên. OP liệt kê ba điều kiện mà anh ta muốn không cho phép. (Nếu anh ta muốn cho phép các dấu gạch ngang ở đầu/cuối, tại sao anh ta lại đề cập đến chúng?) –

+0

Firefox 4 lỗi trên cái này. '^ [^ -] + (?!. * -).+ [^ -] + $ 'không hoạt động. Thử nghiệm với http://jsbin.com/ujoxu3. – Martijn

22

^[A-Za-z0-9]+(-[A-Za-z0-9]+)*$

Sử dụng biểu thức chính quy này, dấu nối chỉ xuất hiện chỉ trong nhóm. Dấu gạch nối này có biểu thức phụ [A-Za-z0-9]+ xuất hiện ở mỗi bên. Bởi vì biểu thức phụ này khớp với một hoặc nhiều ký tự số alpha, nên không thể có dấu gạch nối khớp với điểm bắt đầu, kết thúc hoặc bên cạnh dấu gạch ngang khác.

+0

Đó là thông minh! Có lẽ dễ hiểu hơn tất cả các công cụ tìm kiếm của tôi. –

+4

@Sachin: Khi tôi hiểu OP, đó là chính xác những gì anh ta muốn. Tuy nhiên, anh ta có thể rõ ràng hơn. –

+0

@Tim - Eeeesshhh ... Hoàn toàn hiểu nhầm câu hỏi. @Brian - Tuyệt đối hoạt động. Đó là lý do tại sao tôi đã cố gắng để phù hợp với -abd và abd- trong regex của tôi ... Cảm ơn và xin lỗi. –

1
^[a-zA-Z0-9](?!.*--)[a-zA-Z0-9-]*[a-zA-Z0-9]$ 

^[a-zA-Z0-9]  /*Starts with a letter or a number*/ 
(?!.*--)   /*Doesn't include 2 dashes in a row*/ 
[a-zA-Z0-9-]* /*After first character, allow letters or numbers or dashes*/ 
[a-zA-Z0-9]$  /*Ends with a letter or a number*/ 

Matches:

Re-play/ Re-play-ed

không Liệu MATC h:

Replay-/Re - Play/-Replay

0

Nếu “-” không được phép vào đầu cũng không cuối của chuỗi, bạn đang tìm kiếm một chuỗi các “một hoặc nhiều alanum, tiếp theo là một hoặc nhiều nhóm (s) của một dấu gạch ngang theo sau là 1 hoặc nhiều hơn alanum ”

/[0-9A-Z]+(-[0-9A-Z]+)+/ 

Đơn giản là một phương châm có giá trị với cụm từ thông dụng. (nota: để tìm kiếm các ký tự nhỏ, thêm chúng. Tôi không rõ ràng)

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