-
str.replace(/\S*\d\S*/g, '')
התווים המשתתפים:
- הביטוי עצמו עטוף בקו נטוי כדי לציין שמדובר באוביקט מסוג Regex
S\
תואם לכל תו אשר אינו Whitespace (לדוגמא שורה חדשה \ טאב \ רווח)*
תואם לתו הקודם 0 פעמים או יותר (התו מציין את כמות ההופעות הדרושה של התו הקודם)d\
תואם לתווים 0-9g
לאחר סיום הביטוי מגיע תורם של ה"דגלים" כדי להחליט על האופן הרצוי בו יתבצע התהליך, לדוגמא במקרה זה אנו עושים שימוש בg\
כך שהתהליך יתבצע עבור כל המילים, ולא יושלם אחר מציאת ההתאמה הראשונה
אופן הפעולה של הביטוי:
מצא מילה המתחילה בכל אחד מהתווים אשר אינם Whitespace אפס או יותר פעמים, מכילה לפחות ספרה אחת ומסתיימת בכל אחד מהתווים אשר אינם Whitespace אפס או יותר פעמים.
-
@ענן אמר בהסרת מילים שלמות בגאווה סקריפט עם רג'קס:
@ב-ל סגור לי
https://dev-blog.co.il/regex-episode-1
זה אותו פוסט -
@צדיק-תמים המטא-תו
S\
הפותח יתאים לנקודה המופיעה לפני המספר\ים, והמטא תו הסוגר יתאים לנקודה המופיעה לאחר המספר\ים.@צדיק-תמים אמר בהסרת מילים שלמות בגאווה סקריפט עם רג'קס:
אגב בצורה הזאת, במשפט ש @ענן הביא לדוגמה יווצר רווח כפול מיותר:
ניתן לבחור את הרווח המופיע בסיום המילה:
str.replace(/\S*\d+\S*\s?/g, '')
-
@רפאל אמר בהסרת מילים שלמות בגאווה סקריפט עם רג'קס:
\S*\d+\S*
https://regex101.com/r/bQOw41/1
אולי במקום להתאים את כל התווים של לא whitespace, צריך לעשות משהו כזה?
\d+(\.(?=\d))?\d*
הרי הנקודה זה התו היחידי שאמור להפוך את זה למספר חוקי, ורק אם הוא מוקף בספרות משני צדדיו.
הנה דוגמה
https://regex101.com/r/GKe88K/1 -
@ענן כותרת השאלה שלך היא
"הסרת מילים שלמות בגאווה סקריפט עם רג'קס"
אין רמז בגוף השאלה שאתה לא יודע כלום ברג'קס.
@רפאל ענה לך עם ביטויועם הסבר די ארוך עליו שאולי לא הבנת אותו אךוהתגובה שלך היא ש"תשמח להסבר על הג'בריש הזה" כי אתה רוצה גם למחוק מילים באנגלית.
זה מרגיש לי מאוד ניצול. לא חסר פה מי שיענה לך גם אם תהיה שקוף, ותכתוב "אני רוצה למחוק, ולא יודע בכלל רג'קס". "מעניין אותי בעיקר למחוק, אל תטרחו מידי להסביר לי רקע כולל" או "אשמח להסבר ראשוני על רג'קס שיאפשר לי לעשות כך וכך".
סליחה אם נשמעתי חריף, ייתכן שאתה עם תום לב מוחלט, אבל שיתפתי אותך ברושם שעלה מהמילים.עריכה העמידו אותי על טעותי ש@רפאל הסביר רק אחרי בקשת ההסבר, אבל השארתי את תגובתי המקורית כי לדעתי היא עדיין נכונה בחלקה הגדול. שוב סליחה על ההערה, ואנא להיות רגישים כלפי נותני העזרה.
-
@dovid אני מתנצל, אבל זה דווקא היה ממש הפוך, המלאך @רפאל כתב לי מה לעשות במקרה הספציפי, אבל רציתי להבין מה זה הג'יבריש כדי שאוכל בפעם הבאה לעשות את זה לבד, אבל אתה צודק שבאמת מהצורה שבה שאלתי את זה אפשר להבין אחרת, אני התכוונתי שיפנו אותי (כמו שבאמת עשו, תודה!!) או יסבירו לי על הג'יברוש של הרג'קס הזה, הייתי צריך לכתוב שאני רוצה לדעת רג'קס ולא רק לדעת איך מוחקים מילה שלמה, סורי.
-
@ענן מאה סליחות.
בקשר לשאלה, אתה רוצה שיימחק גם F15, או מחשבים4 ?
אולי תכתוב את הצורך שלך המדוייק, כי לכל אפשרות יש המון נפק"מ שבעלי ניסיון כבר נתנו עליהם את הדעת ויחכימו אותך.בקשר ללימוד רג'קס, יש את הלינק שהביאו פה (שהוא מאמר שלי), ויש עוד הרבה באינטרנט. צריך לחפש "מדריך regex".
-
@dovid אמר בשאלה. איך לכתוב ביטוי רג'קס? ואיך למחוק ברג'קס מילים שלמות?:
בקשר לשאלה, אתה רוצה שיימחק גם F15, או מחשבים4 ?
בהחלט.
זה מעביר אוטומטית מסמכים והודעות סמס למקום מסויים, ואני רוצה שזה יעבור בלי פרטים מסוימים, כמו כתובות מייל ומחירים, אז מחקתי מילים שיש בהם ספרות או @.
השאלה מה יקרה עם המחיר יהיה כתוב במילים "עשרים שקל", זה לא אמור להיות קורה, אבל בכל אופן חשבתי שאם כתוב הביטוי "שקל" למחוק שני מילים לפני ומילה אחת אחרי...
-
@ענן אם ככהאז @רפאל הבין אותך נכון, והתשובה שלו השניה עם לכידת הרווח היא המתאימה.
str.replace(/\S*\d+\S*\s?/g, '')
אני מעדכן אותה כדי לכלול גם לועזית כל שהיא בתוך מילה:
str.replace(/\S*[\dA-Za-z]\S*\s?/g, '')
הסבר:
[...] משמעותו תו מאלה שמופיע בסוגריים.
\d זה ספרה, כלומר 0-9, וA-Za-z זה טווח התווים האנגליים. -
@dovid אמר בשאלה. איך לכתוב ביטוי רג'קס? ואיך למחוק ברג'קס מילים שלמות?:
A-Za-z זה טווח התווים האנגליים.
בפשטות מספיק A-z
זה טווח היוניקוד -
@dovid אמר ברג'קס - התו "_":
@צדיק-תמים A-z הכוונה מתו A עד תו z בסדר האותיות של הASCII
בין הZ עד הa יש כמה וכמה סימנים. אני באמת אף פעם לא שמתי לב לכך, וכעת אני מבין למה טורחים לכתוב ככה
[A-Za-z]התווים שA-z כולל בלי לשים לב:
91 - [
92 - \
93 - ]
94 - ^
95 - _
96 - `זה לא תווים קריטיים (ולכן לא שמתי לב לזה אף פעם) אבל עדיף לדעת בדיוק מה קורה, במקרה שלנו זה היה מוחק מילה שמוקפת בסוגריים מרובעות למשל.
-