שלח תשובה

זירת השאלות

813
צפיות
26
תשובות

שאלות בJS

,‏ 13 ביולי, 2004

הינה השרשור הקודם:
https://webmaster.org.il/forums/Message.asp?Id=19395

השאלות שלי הם:
1. איך עושים טיימר בJS?
2. הסבר על הקוד שניר נתן לי כתשובה לשאלה בשרשור הקודם. הינה הקוד:


<script>
var rExp1 = /[a-z0-9]/gi
var rExp2 = /[א-ת]/gi

var isNumberOrEnglish = rExp1.test("Yes is the num 1") // return true
var isHebrew = rExp2.test("עברית") // return true

alert("is Hebrew:"+isHebrew+"n is number or english: "+isNumberOrEnglish)
</script>


עוד שאלות לגבי הקוד:
מה זה Reg Exp? האם בשני המשתנים הראשון אני צריך לכתוב את כל האותיות והמספרים או מה שאתה כתבת זה מספיק?
מה המשמעות של gi בסוף? ולמה האותיות/מספרים כתובים בתבנית: /[אבג]/


תודה ענקית לכולם! ובבקשה תתיחסו לכל השאלות בהודעה.

תגיות:

26 תשובות

  1. תשובה ושאלה ?
    איזה טיימר אתה צריך ו-ב. כל מה שרציתה לדעת על Regular Expresstions

  2. Night הגיב:

    תודה..
    טיימר נגיד עוד חמש שניות יעשה ככה וככה..
    אפשרי נכון?

  3. כן אבל תלוי מה אתה רוצה לעשות
    אם אתה רוצה שהוא כל 15 שניות יעשה משהו זה דבר אחד אבל אם אתה רוצה שזה יעשה פעם אחת ב- 15 שניות זה משהו אחר תגיד מה אתה צריך

  4. Night הגיב:

    אני רוצה שכל כמה שניות הוא יעשה משו
    יעשה משהו פעם אחת ובזה נגמר הסיפור.. אני לא צריך שהוא יחזור על זה כל הזמן.

  5. אז ככה:
    את זה אתה שם ב-head

    <script language="javascript">
    function yourCommends(){
    alert("i commend you")
    }
    </script>

    את זה אתה שם במקום ה-body

    <body onload="setInterval('yourCommends()', 15000);">

  6. Night הגיב:

    בקשר לReg Exp
    הוא בעצם בודק אם יש במחרוזת מסויימת את התווים שהגדירו לו.
    אני צריך לבדור אם יש רק את התווים האלה!
    אם למשתמש יש גם ערבית ורוסית במחשב הוא יכול להקליד את התווים האלה והם לא צריכים להתקבל..
    למישהו יש רעיון איך אני עושה את זה? (אני לא מבקש קוד אני מבקש רעיון.)
    אם אני ישים במשתנה את כל התווים שאני מרשה, ואני יריץ לולאה על הטקסט שבודקת את התווים האלה או משהו כזה.. יש לכם רעיון?

  7. נגיד יש לך טקסט..
    ואתה רוצה להפוף את התווים ה"לא טובים" שלו ל-"תווים טובים" אז אתה משתמש ב-replace

  8. Night הגיב:

    הבעיה ש..
    אני לא יכול לרשום את כל התווים האסורים כי יש מלא! אותיות ברוסית בגרמנית בסינית יפנית ערבית מצרית טורקית וכ'ו! וזה חוץ מכל התווי אסקי המיוחדים.
    יותר פשוט להגדיר איזה תווים מתקבלים לא?
    יש רעיון איך עושים את זה?

  9. ניר טייב הגיב:

    אז כך
    RegExp זה מעין תבנית טקסט.
    אני השתמשתי בדרך ה"מקוצרת" ולא בבונה(constructor) של regExp
    בעצם את מה שכתבתי היה אפשר לעשות בשני דרכים:


    var rExp1 = /[a-z0-9]/gi
    או
    var rExp1 = new RegExp("[a-z0-9]","gi")

    (אם אני לא טועה הראשון יוצא יותר מהיר)

    ה-gi אומר שזה יהיה על כל הטקסט (global-g) ושזה יתעלם מאותיות גדולות/קטנות (ignore case-sensitive)

    בעצם כששמתי את ה-[] זה אומר רק התווים שנמצאים בתוך ה-[] מתקבלים
    יש לך שני אפשרויות:
    1. לשים שם רק את האותיות והמספרים שאתה רוצה לאפשר /(ו/או)/  סימנים רגולרים וכדומה.
    2. להכניס סדרות של תווים (כמו שאני עשיתי – 0-9, א-ת וכדומה) אני עשיתי שיהיה אפשר את כל התווים באנגלית ובמספרים (בראשון) ובשני רק אותיות בעברית

    לאחר מכן עשיתי בדיקה (ע"י השיטה test של אובייקט regexp) אם המחרוזת עומדת בתנאי שצוים לה. השיטה test מחזירה ערכים בוליאניים(TRUE/FALSE)

  10. ניר טייב הגיב:

    ואם כתבתי שם משהו לא נכון
    אני מניח שאוריקס או הילדה (או כל מי שמבין ב-RegExp ) יתקן אותי

  11. Night הגיב:

    אוקיי תודה!
    תודה !
    חשבתי על רעיון שבאירוע ONKEYPRESS של תיבת הטקסט אני אבדוק את התו שנכתב ואם הוא מופיע בREGEXP אז הוא יכתב ואם לא הוא לא. כך אני אמנע שהמשתמש יכתוב תווים לא רצויים.
    בגלל שאני עושה בדיקה גם בצד השרת (ואת זה אי אפשר לעשות בONKEYPRESS) אני רוצה לשאול איך עושים דבר דומה בVBSCRIPT?
    גם אם בVBS אין REGEXP אולי יש למישהו דרך עקיפה לבדוק את התווים?

    תודה לכולם!

    נ.ב:
    אני לא חושב שצריך להעביר לצד שרת כי אני שואל על VBS שזה כמעט אותו דבר בלקוח ובשרת.

  12. ניר טייב הגיב:

    כן זה נכון לעשות
    וב-VBS יש RegExp לא הכי מומלץ להשתמש בו ואני לא יודע ממש איך משתמשים בו ב-VBS בכל מקרה
    בחיפוש בפורום צד שרת חפש איר המילה global בתוכן אני מניח שתמצא משהו

  13. אוריקס הגיב:

    הערה
    אני לא יודע אם לא השתמשת בקונסטרקטור כי קל לך או מתוך ידיעה, אבל אף פעם אל תשתמש בקונסטרקטורים של JS. זה לא טוב בשום מקרה, ואתה נהגת נכון.

  14. אוריקס הגיב:

    אז לא נעביר את השרשור
    ובקשר לשאלתך – זוהי לא הדרך הנכונה לעשות את זה. הדרך הרגילה היא בעת שליחת הטופס להריץ בדיקה על כל השדה ולראות אם הוא מתאים לתבנית שהגדרת.

    אני לא יודע בדיוק מה שונה בין VBS ל JS כשזה מגיע ל RegExp (חוץ מהעניין ש VBS יותר איטית), חפש ב MSDN.

  15. ניר טייב הגיב:

    מתוך ידיעה
    אני עוקב אחרי הבדיקות שלך (ושל האחרים) בתפוז

    וכדי להגדיר תאריך פשוט כותבים אותו או שחייבים להשתמש בקונסטרוקטור ?

  16. אוריקס הגיב:

    לא חייבים כמעט בשום דבר.
    אבל בתאריך אם אני לא טועה חייבים.

  17. Night הגיב:

    חיפשתי בפורום צד שרת ו….
    זה מצא כל מה שקשור לGLOBAL.ASA……
    שזה לא קשור.
    חיפשתי גם בMSDN ולא ממש מצאתי.
    למישהו יש מושג על REGEXP בVBS?

  18. Night הגיב:

    כן את זה מצאתי אבל..
    לא הבנתי מזה הרבה..
    למשל מה התפקיד של המשתנה patrn?

  19. ניר טייב הגיב:

    pattern זה התבנית
    זה הביטוי הרגולרי שעל פיו אנו בודקים את המחרוזת
    בקוד שאני כתבתי


    var rExp1 = new RegExp("[a-z0-9]","gi")

    אז החלק המודגש הוא ה-pattern
    (השתמשתי בבונה רק כדי להדגים)

  20. Night הגיב:

    אני עדיין לא מצליח להבין
    את הפונקציה שיש בקישור שנתת… ובטח שלא REGEXP בVBS…
    יש משהו בעברית שמסביר טוב?

  21. ניר טייב הגיב:

    כנס לקישור שיש בסוף העמוד
    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/script56/html/vsobjRegExp.asp

    העמוד הזה מסביר את התכונות והשיטות שנכללות ב-regExp בVBS

  22. Night הגיב:

    אינקלוד (סליחה על ההודעה הקודמת..)
    האם האינקלוד הזה הוא בASP?


    <!– #include file="page.asp" –>

    אם הוא לא בASP, אז האם הוא בHTML? אפשר לאנקלד בHTML?

    או יותר ברור:
    איך מאנקלדים בASP, ואיך בHTML?

    תודה

שלח תשובה