input mình chỉ cho phép nhập số hoặc số và 1 ký sự dấu +
ví dụ như: 3+, 123, 2345, 356+, 789+
Mình viết thế này ko biết sai chỗ nào nhỉ:
Cảm ơn mn rất nhiều!
Giúp đỡ về regex
Bạn dùng \+, còn + như bạn viết là đang match 1 hoặc nhiều kí tự bạn chỉ định. vd: a+ sẽ match a, aa, aaa…
Mình có viết regex này, bạn tham khảo thử: /\d+\+?/
Edit: mình thử lại và thấy sai, mình xin update: /^\d+\+?$/
cho mình hỏi là trường hợp có thể để trống hoăc điền theo rule thì mình viết thế này:/^(\d++)|?$/
bạn xem giúp mình sai chỗ nào. Cảm ơn bạn nhiều
Phải escape dấu + đi đã \+
Tiếp theo là để match nguyên 1 string thì phải dùng cả ^
và $
.
>> /^(\d+\+)?/.test("300+600")
true
Hê lô bạn, chắc bạn đang hơi nhầm ở ?,
vd: t?est thì sẽ match test hoặc est (t? tức có 1 t hay không có t nào đều được). Quay lại đoạn bạn viết |?$ thì bạn không chỉ ra kí tự trước ? mà bạn mong muốn nó xuất hiện 1 lần hoặc không lần xuất hiện ===> lỗi
Mình đóng góp một cách này, bạn tham khảo thử:
/^\s*$|^$|^\d+\+?$/
: (chuỗi chỉ gồm 0 white space hoặc nhiều kí tự white space) hoặc (chuỗi trống) hoặc (chuỗi bắt đầu bằng số và kết thúc bởi 0 dấu cộng hoặc 1 dấu cộng)
Bạn tham khảo thêm trang này sẽ phân tích regex hữu ích nè: regex101: build, test, and debug regex
Ps: mình có sai ở điểm nào mong nhận được ý kiến của cả nhà ạ.
/^\s*$/
bao gồm cả /^$/
rồi mà
à dạ đúng rồi, em viết thừa rồi hehe.