09/10/2018, 23:54

Bác nào rành về regular expression cho em hỏi 1 câu

Em muốn lọc filename sao cho nếu đuôi của nó là .html thì báo là "HTML", còn nếu đuôi không phải là HTML thì sẽ báo là "unknown"
em xây dựng code JavaScript:
Code:
if(str.match(new RegExp(".(html)$"))){
		alert("HTML");
	}
	else {
		alert("unknown");
	}
Bây giờ em muốn nó lọc như trên nhưng trừ 1 số file name như là "abc.html", "def.html", "ghi.html" thì nó vẫn báo là "unknown"

Bác nào rành vụ này giúp em với. em cần gấp lắm rồi.
Cảm ơn các bác.
ngoctam1011 viết 02:08 ngày 10/10/2018
Bạn vào thử Google thử xem!
Thân (^_*)
viết 02:04 ngày 10/10/2018
Theo tui thì bạn tạo 1 cái list chứa exceptional names. Rùi check xem có trong list này hay ko thui. Regex ko làm đc mấy cái này vì nó chỉ check format thôi.
phuongngoc viết 02:04 ngày 10/10/2018
$ngoctam1011: tất nhiên là em đã google rồi và không thành công nên mới vào đây hỏi các bác chứ

$nhc1987: mình nghĩ là check được nhưng mình chưa viết đúng thôi.

Bác nào có cao kiến thì giúp em với
cái nick đó viết 02:05 ngày 10/10/2018
tớ nghĩ là cậu chưa tìm với từ khóa javascript regular expression
phuongngoc viết 01:59 ngày 10/10/2018
không phải là em có tính ăn sẵn nhưng mà em đã thử rất nhiều rồi, search rất nhiều rồi. Tìm mãi không ra nên mới mò lên đây hỏi các bác. Lên đây các bác bắt search lại... nản
duongdragonxxx viết 02:09 ngày 10/10/2018
Code:
<script language="javascript">
function CheckInput()
{
	var re = new RegExp(document.getElementById("regex").value);

  if (document.getElementById("txtIn").value.match(re)) 
  {
    alert("Successful match");
  } 
  else 
  {
    alert("No match");
  }
}
</script>
<form id="demoRegex">
Regex: <input type="text" id="regex" value="\b.html+\b" /><br>
Input <input type="text" id="txtIn" value="abc.html" /><br>
<input type="button" value="Check" onclick="CheckInput()"/>
</form>
langxangvn viết 02:09 ngày 10/10/2018
Code của bạn chạy đúng rồi. Nhưng có lẽ bạn không cẩn thận khi thực hiện. Cần trim cái file name trước vì (html)$ yêu cầu kết thúc là html. Vậy nên html(space) chưa trim sẽ không match regex.

Thứ 2 kiểm tra trước . là 1 character có thể đơn giản dùng .+ là not break line character hay dùng match ít nhất 1 word \w+ hay [a-zA-Z0-9_]+ cho chắc.

Bạn cứ chạy thử đoạn code của bạn sẽ thấy nó đúng.

<code>
<script>
if("a.html".match(new RegExp("\.(html)$"))){
alert("HTML");
}
else {
alert("unknown");
}
</script>
</code>

Nếu hay dùng Regex bạn hãy download RegexBuddy mà dùng, rất tiện lợi.
Có thể viết đơn giản như sau:
<code>
if (subject.match(/.+\.(html)$/)) {

} else {

}
</code>
lnt viết 02:00 ngày 10/10/2018
Quote Được gửi bởi phuongngoc View Post
Em muốn lọc filename sao cho nếu đuôi của nó là .html thì báo là "HTML", còn nếu đuôi không phải là HTML thì sẽ báo là "unknown"
em xây dựng code JavaScript:
Code:
if(str.match(new RegExp("\.(html)$"))){
		alert("HTML");
	}
	else {
		alert("unknown");
	}
Bây giờ em muốn nó lọc như trên nhưng trừ 1 số file name như là "abc.html", "def.html", "ghi.html" thì nó vẫn báo là "unknown"

Bác nào rành vụ này giúp em với. em cần gấp lắm rồi.
Cảm ơn các bác.
Code:
if (str.match(new RegExp("\.html$"))&&!str.match(new RegExp("^(abc|def|ghi)\.")))
    alert("HTML");
else
    alert("unknown");
undefined.vn viết 02:04 ngày 10/10/2018
Chỉ cần "javascript regex check file extension" là có tất cả
Bài liên quan
0