שלח תשובה

זירת השאלות

593
צפיות
23
תשובות

עבודה עם REGEXP משהו לא מובן…

,‏ 11 בספטמבר, 2004

שלום,
יש לי שאלה בקשר לREGEXP…
שמעו,

אני שולח טופס לעמוד אחר, ואז אני רוצה לבדוק אם השדה NAME נשלח ללא עברית(!).

איך עושים את זה?!
אני הצלחתי לעשות רק דבר כזה…

IdOfTheForum = Request.QueryString("id") ' מספר הפורום
Dim regEx
Set regEx = New RegExp
regEx.Global = True
regEx.Pattern = "[^0-9]"
IdOfTheForum2 = regEx.Replace(IdOfTheForum, "")
Set oRegExp = Nothing

if NOT IdOfTheForum2 = IdOfTheForum then
Response.Redirect("index.asp")
Response.End
End if


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

תודה מראש לעוזרים!

תגיות:

23 תשובות

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

    אז תחליף
    את זה:

    egEx.Pattern = "[^0-9]"

    czv

    egEx.Pattern = "[^א-ת]"

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

    שני דברים:
    1. אתה בכלל בדקת מספרים…
    2. השימוש ב replace מיותר ובזבזני במקרה הזה.

    נסה את זה:

    Function xyz(str)
        Set oRX = New RegExp
        oRX.Pattern = "^[^א-ת]+$"
        xyz = oRX.Test(str)
        Set oRX = Nothing
    End Function

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

    ולפעמים יהיה יותר יעיל
    לבדוק את זה על דרך השלילה.

  4. ניר יש לך טעות גדולה!!!
    שיים לב מה ביקשתי..
    אמרתי "שאני לא רוצה עברית בכלל…
    אתה הצעתי לי להחליף בקוד את החלק של המספר באותוית..אבל זו טעות! כי אז הוא רק יקבל עברית ולא אנגלית או סימנים מיוחדים…

    ואוריקס..אני לא הצלחתי (ולא הבנתי) את הקוד שלך…

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

    שטויות
    הוא לא הציע לך להחליף את המספרים באותיות, הוא רק נתן לך את התבנית.

    אני נתתי לך פונקציה, אם אתה לא יודע לעבוד איתה אז אתה לא יודע לעבוד עם RegExp ו/או פונקציות, קרא במדריך באתר.

    רמז: היא מחזירה true במקרה שאין עברית במחרוזת שהיא מקבלת.

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

    Dim regEx
    Set regEx = New RegExp
    regEx.Global = True
    regEx.Pattern = "[^א-ת]"
    u2 = regEx.Replace(u, "")
    Set oRegExp = Nothing

    if u2 = u then
    Response.Redirect("index.asp?log=f2")
    Response.End
    End if

    הקוד עובד חלק..הבעיה היחדה שלו היא שאם אני משלב אנגילת/סימנים/מספרים עם העברית, אז הקוד הזה מחשיב את המחרוזת כלא עברית, ובכך יש "דילוג, על הקוד..

    איך ניתן למנוע זאת (ע"י הקוד המצויין הנ"ל) ?

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

    שים שיש בהתחלה "^"
    שאומר כל התווים חוץ מהסדרה/ות שכתבתי

    בהצלחה

  8. סליחה על הבורות, אבל……………
    איפה זה בדיוק "בהתחלה" ?

  9. אממממממממממממ……..
    אתה מתכוון לעשות כך:

    regEx.Pattern = "[^א-ת]"

  10. לא עובד ו…..
    אם לא שמת לב, מה שאמרת לי לעשות היה בדיוק בקוד המקורי שנתתי בהודעות הקודמות..להזכירך:

    Dim regEx
    Set regEx = New RegExp
    regEx.Global = True
    regEx.Pattern = "[^א-ת]"
    u2 = regEx.Replace(u, "")
    Set oRegExp = Nothing

    if u2 = u then
    Response.Redirect("index.asp?log=f2")
    Response.End
    End if

    הקיצר, לא עובד כמתוכנן….

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


    הדוגמא שבאתי לתת זה מה שאוריקס כתב בלי לשים לב

    ואני לא מוצא שום הבדל בין מה שנתתי לך קודם למה שכתבת אחר כך
    אולי תועיל לומר לי מה שונה ?

    בכל מקרה מומלץ ללכת לפי מה שאוריקס נתן כי זה הוא הנכון

  12. ברור שקיימים מדריכים כאלו,
    פונקציה זה חלק מובנה בכל הטכנולוגיות (או ברובן).
    בVbs, בJs.

  13. נתתי לך שתי מדריכים,
    ותבחר מה מתאים לך (תלוי בשפת הסקריפט שאתה עובד איתה).

  14. יש אפשרות להריץ לולאה על אותיות??
    כלומר,
    אני רוצה ליצור לולאה שתוציא לי אותיות מהאות א' ועד ת'.
    האם יש אפשרות כזו בלולאה? אם כן תראו דוגמה…
    ואם לא אז איך כן (אם בכלל) ?

  15. Alon12 הגיב:


    ככה:


    for i=asc("א") to asc("ת")
    response.write i & " – " & chr(i) & "<br>"
    next

  16. אוףףףףףףף השרת נפל..אני אבדוק מחר..
    לילה טוב לכל חברי הפורם

שלח תשובה