موصى به: تصدير ملفات Excel في برنامج تحليل ASP مثيل تتمثل إحدى طرق استخدام Excel في ASP في ربط ملف Excel كقاعدة بيانات ، وتشبه العملية عملية Access Database. لكن هذه الطريقة ليست مفيدة دائمًا ، يجب أن تكون Excel ليست قاعدة بيانات علائقية. لتنسيق ثابت ،
ما هو regexp في ASP
اسم الحرف الاسم
| ما يلي هو المحتوى المقتبس: اسم الوظيفة العامة CheckName (STR) checkName = صحيح ديم مندوب ، تمر تعيين rep = جديد regexp 'إنشاء تعبير منتظم. rep.global = true 'حدد توفر عالمي. rep.InsoreCase = True 'تعيين ما إذا كان يجب تمييز الحرف الحساسة للحالة وضع وضع. rep.pattern = [u0009U0020U0022-U0028U002C-U002EU003A-U003FU00BU005CU0060U00CU00EU00EFUE5E5E5] SET PASS = REP.EXECUTE (STR) "قم بإجراء بحث تعبير منتظم على السلسلة المحددة. إذا تم pass.count <> 0 ثم checkName = false 'Response.write (checkName) 'response.end () تعيين مندوب = لا شيء وظيفة نهاية |
عندما نقوم بإنشاء مواقع ويب ، وخاصة مواقع التجارة الإلكترونية المختلفة ، سنطلب أولاً من المستخدمين ملء بعض النماذج للحصول على معلومات مختلفة حول المستخدمين المسجلين ، لأن المستخدمين قد يدخلون معلومات مختلفة ، وبعض البيانات التي لا تفي بالمتطلبات ستؤدي إلى مشكلة غير ضرورية لمعالج ASP الخلفي لدينا وحتى تسبب بعض مشاكل الأمان إلى موقع الويب. لذلك ، قبل حفظ هذه المعلومات في قاعدة بيانات موقع الويب ، يجب علينا التحقق من شرعية إدخال البيانات من قبل هؤلاء المستخدمين بحيث يمكن تنفيذ البرامج اللاحقة بأمان وسلاسة. لذلك عادةً ما نكتب برنامج التحقق من ASP على الواجهة الخلفية لتحليل ما إذا كانت البيانات التي يدخلها المستخدم قانونية.
قد يسأل بعض الأشخاص ، لا يمكنهم استخدام جافا سكريبت على العميل للتحقق من بيانات المستخدم بشكل أفضل وأسرع؟ في الواقع ، هذا جيد في معظم الحالات ، لماذا في معظم الحالات؟ نظرًا لأن JavaScript الذي تكتبه قد لا يكون من الطبيعي تمامًا تشغيل IE و Netscape في نفس الوقت ، لأن Jscript من Microsoft ليس هو نفسه تمامًا مثل JavaScript ، وبعض المتصفحات لا تتوافق بالضرورة مع Microsoft و Netscape ، لذلك من المحتمل أن يكون JavaScript على العميل لا يحمل بدقة البيانات المختلفة التي تم إدخالها من قبل المستخدم. يعمل برنامج ASP على جانب الخادم ، لكنه مرتبط ببيئة الخادم الخاص بك. بغض النظر عن المستعرض الذي هو العميل ، لا يوجد فرق لبرنامج ASP الخاص بك ، لذلك يعد اختيار برنامج ASP الخلفي للتحقق من شرعية البيانات اختيارًا جيدًا.
عند استخدام ASP للتحقق من شرعية البيانات في الواجهة الخلفية ، كتب بعض الأشخاص العديد من الوظائف لتنفيذها لتلبية التحقق من البيانات في بيئات مختلفة. على سبيل المثال ، إذا أردنا التحقق مما إذا كان عنوان URL الذي أدخله المستخدم قانونيًا ، فيمكننا كتابة جزء من التعليمات البرمجية لتحليل المعلومات التي أدخلها حرف المستخدم واحدًا تلو الآخر. إذا كان مقدار المعلومات المراد تحليلها صغيرة ، فمن الأسهل التعامل معها. إذا تغيرت شروط التحليل ، فسيكون ذلك بائسة. لا يتعين علينا فقط أن نكتب رمزًا طويلًا جدًا ومرهقة ، ولكن كفاءة التشغيل منخفضة للغاية. هل هناك حل جيد؟ نعم ، هذا هو كائن التعبير العادي الذي توفره VBScriptP5.0. طالما أن الخادم الخاص بك قد تم تثبيته IE5.x ، فسوف يجلب VBSCRIPT5.0. في الواقع ، كانت التعبيرات المنتظمة في الأصل حاصلة على براءة اختراع تحت UNIX ، وخاصة في لغة Perl. يرجع ذلك بالتحديد إلى الوظائف القوية للتعبيرات العادية التي تقوم Microsoft ببطء بتنفيذ كائنات التعبير العادية إلى نظام النافذة وتستخدمها.
بالنسبة لكائنات التعبير العادية ، يمكننا بسهولة التحقق من شرعية البيانات المختلفة.
أولاً ، دعونا نفهم بالضبط ما هو كائن تعبير منتظم لـ VBScript. دعونا نلقي نظرة أولاً على البرنامج:
| ما يلي هو المحتوى المقتبس: وظيفة checkexp (جارن ، strng) Dim regex ، تطابق 'إنشاء متغيرات. تعيين regex = جديد regexp 'إنشاء تعبير منتظم. regex.pattern = وضع مجموعة. regex.ignorecase = true 'تعيين ما إذا كان الحرف حساسة لحالة الأحرف. regex.global = true 'تعيين التوافر العالمي. Matches = regex.test (strng) 'إجراء بحث. checkexp = التطابقات وظيفة نهاية |
في هذا البرنامج ، نرى أنه يمكن استخدام REGEXP الجديد للحصول على كائن تعبير منتظم ، ثم يتم تعيين الكائن قالب مطابقة منتظم ، أي ، إخبار كائن التعبير العادي بنوع القالب الذي تريد مطابقة ، ثم استخدام اختبار الطريقة لاكتشاف ما إذا كانت البيانات التي سيتم معالجتها تتطابق مع القالب الذي قدمناه. إذا لم يتطابق مع ذلك ، فهذا يعني أن البيانات المراد معالجتها ليست بيانات قانونية ، والتي تدرك التحقق من شرعية البيانات. يمكننا أن نرى أنه باستخدام قالب مطابقة مصمم بشكل صحيح ، يمكننا بسهولة التحقق من مجموعة من معلومات البيانات بتنسيق.
ومع ذلك ، فإن كائن التعبير العادي في VBScript 5.0 يحتوي على العديد من الأساليب والخصائص الأخرى ، مثل استبدال الطريقة (). باستخدامه ، يمكننا تنفيذ منتدى نمط UBB المألوف و BBS عبر الإنترنت بسرعة. هذا ليس ضمن نطاق المناقشة لدينا. سنناقشها لاحقًا. دعونا نلقي نظرة على الأساليب وخصائص كائنات التعبير العادية في التحقق من البيانات:
الطرق الشائعة: تنفيذ طريقة
الوصف: إجراء بحث تعبير منتظم على السلسلة المحددة.
بناء الجملة: Object.execute (سلسلة) يتضمن بناء جملة طريقة التنفيذ الأجزاء التالية:
الكائن: مطلوب. دائما اسم كائن regexp.
السلسلة: مطلوب. سلسلة النص التي يتم تنفيذ التعبير العادي عليها.
الوصف: يتم تعيين نمط تصميم البحث العادي من خلال نمط كائن regexp. تُرجع طريقة التنفيذ أ
تطابق المجموعة التي تحتوي على كل كائن مطابقة موجود في String. إذا لم يتم العثور على تطابق ، فإن تنفيذ إرجاع مجموعة مطابقة فارغة.
طريقة الاختبار
الوصف: يؤدي بحث تعبير منتظم على السلسلة المحددة ويعيد قيمة منطقية تشير إلى ما إذا كان تم العثور على نمط مطابقة.
بناء الجملة: Object.test (سلسلة)
يتضمن بناء جملة طريقة الاختبار الأجزاء التالية:
الكائن: مطلوب. دائما اسم كائن regexp.
السلسلة: مطلوب. سلسلة النص لإجراء بحث تعبير منتظم.
ملاحظة: يتم تعيين النمط الفعلي للبحث عن التعبير العادي من خلال خاصية نمط كائن regexp. خاصية regexp.global ليس لها أي تأثير على طريقة الاختبار. إذا تم العثور على نمط مطابقة ، فإن طريقة الاختبار تُرجع صحيحًا ؛ خلاف ذلك ، فإنه يعود خطأ.
الخصائص الشائعة: الخصائص العالمية
الوصف: يقوم بتعيين أو إرجاع قيمة منطقية تشير إلى ما إذا كان النمط يطابق كل ما يتوافق مع أول أو أول خلال سلسلة البحث بأكملها.
بناء الجملة: object.global [= true | خطأ شنيع ]
معلمة الكائن هي دائمًا كائن regexp. إذا تم تطبيق البحث على السلسلة بأكملها ، فإن الخاصية العالمية لها قيمة صحيحة ، وإلا فإن قيمتها خاطئة. الإعداد الافتراضي صحيح.
سمة agnorecase
الوصف: يضبط أو إرجاع قيمة منطقية تشير إلى ما إذا كان البحث عن الوضع حساسًا للحالة.
بناء الجملة: object.ignorecase [= true | خطأ شنيع ]
معلمة الكائن هي دائمًا كائن regexp. إذا كان البحث حساسًا للحالة ، فإن خاصية الجينوريكاس خاطئة ؛ خلاف ذلك ، صحيح. القيمة الافتراضية صحيحة.
خصائص نمط
الوصف: يضبط أو إرجاع نمط التعبير العادي الذي يتم البحث فيه. هذه هي السمة الأكثر أهمية ، وقمنا بتعيين هذه السمة بشكل أساسي لتحقيق التحقق من البيانات.
بناء الجملة: Object.pattern [= SearchString]
يحتوي بناء جملة خاصية النمط على الأجزاء التالية:
الكائن: مطلوب. دائما متغير كائن regexp.
SearchString: اختياري. تعبير السلسلة العادية يجري البحث. قد يحتوي على مختلف أحرف التعبير العادية المحددة في جدول جزئي.
الإعدادات: يتم استخدام الأحرف والتسلسلات الخاصة عند كتابة أنماط التعبيرات العادية. يصف الجدول التالي الأحرف والتسلسلات التي يمكن استخدامها وتعطي أمثلة.
وصف الحرف: حدد الحرف التالي كحرف خاص أو قيمة حرفية. على سبيل المثال n يطابق الحرف n. ن تطابق خط الفواصل. التسلسل/المباراة ، (المباراة.
^: تطابق موضع بدء الإدخال.
$: تطابق نهاية المدخلات.
*: تطابق الشخصية السابقة صفر أو عدة مرات. على سبيل المثال ، يمكن لـ Zo* مطابقة Z و Zoo.
: تطابق الشخصية السابقة مرة واحدة أو أكثر. على سبيل المثال ، يمكن لـ ZO مطابقة حديقة الحيوان ، ولكن ليس z.
؟: تطابق الشخصية السابقة صفر أو مرة واحدة. على سبيل المثال ، أ؟ يمكن أن تتطابق مع أبدا.
.: تطابق أي حرف آخر غير فترات السطر.
(نمط) تطابق النمط وتذكر المباراة. يمكن الحصول على فرعية مطابقة من مجموعة المطابقات الناتجة باستخدام العنصر [0] ... [N]. إذا كنت ترغب في مطابقة أحرف القوس (و) ، فيمكنك استخدام (أو).
x | y: تطابق x أو y. على سبيل المثال ، يمكن لـ Z | Food مطابقة Z أو الطعام. (z | f) ood تطابق حديقة الحيوان أو الطعام.
{n}: n صحيح غير سالب. تطابق بالضبط ن مرات. على سبيل المثال ، لا يمكن لـ O {2} مطابقة O في Bob ، ولكن يمكن أن تتطابق مع الأولين O في Fooooood.
{n ،}: n صحيح غير سالب. تطابق على الأقل ن مرات. على سبيل المثال ، لا يتطابق O {2 ،} في Bob ، ولكن كل شيء في fooooood. o {1 ،} يعادل o. o {0 ،} يعادل O*.
{n ، m}: m و n هي أعداد صحيحة غير سالبة. تطابق على الأقل ن مرات ، حتى م مرات. على سبيل المثال ، يطابق O {1،3} أول ثلاثة نظام تشغيل في Fooooood. o {0،1} يعادل O؟.
[XYZ]: مجموعة أحرف. يطابق واحدة من الشخصيات بين قوسين. على سبيل المثال ، [ABC] يطابق A في سهل.
[^XYZ]: مجموعة أحرف سلبية. تطابق أي شخصيات وليس في هذه الشريحة. على سبيل المثال ، يمكن أن يتطابق [^^ABC] في Plain.
[AZ]: يمثل حرفًا ضمن نطاق معين. يطابق أي حرف داخل الفاصل الزمني المحدد. على سبيل المثال ، يطابق [AZ] أي حرف أبجدي صغير بين A و Z.
[^MZ]: الفاصل الزمني للحرف السلبي. يطابق الشخصيات التي ليست ضمن الفاصل الزمني المحدد. على سبيل المثال ، يطابق [MZ] أي حرف لا بين M و Z.
ب: تطابق حدود الكلمة ، أي الموضع بين الكلمة والفضاء. على سبيل المثال ، يطابق ERB ER In Never ، ولكنه لا يتطابق مع ER في الفعل.
ب: مطابقة مع الحدود غير الكلمة. EA*RB يتطابق مع الأذن في وقت مبكر.
D: يطابق شخصية رقمية. أي ما يعادل [0-9].
D: تطابق الشخصيات غير الرقمية. أي ما يعادل [^0-9].
F: فواصل صفحة المطابقة.
N: تطابق الخط الفاصل.
R: تطابق شخصية عودة النقل.
S: يطابق أي حرف بيضاء ، بما في ذلك المساحات ، علامات التبويب ، فواصل الصفحة ، إلخ. تعادل [FNRTV].
S: يطابق أي شخصية غير بنية. أي ما يعادل [^ fnrtv].
T: يتطابق مع حرف علامة التبويب.
الخامس: تطابق أحرف علامة التبويب العمودية.
W: يطابق أي حرف كلمة ، بما في ذلك السطح السفلي. أي ما يعادل [A-ZA-Z0-9_].
W: يطابق أي شخصية غير كلمة. أي ما يعادل [^a-za-z0-9_].
NUM: تطابق NUM ، حيث Num هو عدد صحيح موجب. اقتبس مرة أخرى لتذكر المباريات. على سبيل المثال ، (.) 1 يتطابق مع شخصين متطابقين متتاليين.
N: Match n ، حيث n هي قيمة نقل رمز ثماني. يجب أن تكون قيمة نقل رمز الأوكتال 1 أو 2 أو 3 أرقام طويلة.
على سبيل المثال ، يتطابق كلا 11 و 11 إلى علامة تبويب. 011 تعادل 01 و 1. لا تتجاوز قيمة نقل رمز الثماني 256. وإلا ، فإن أول حرفين فقط يعتبران جزءًا من التعبير. يسمح باستخدام رمز ASCII في التعبيرات العادية.
XN: Match n ، حيث n هي قيمة نقل رمز سداسي عشري. يجب أن تكون قيمة نقل رمز الرمز السداسي عشريًا من رقمين بالضبط. على سبيل المثال ، يطابق X41 A. x041 مكافئًا لـ X04 و 1. يسمح باستخدام رمز ASCII في التعبيرات العادية.
حسنًا ، هذه هي الطرق والسمات الشائعة الاستخدام. بناء الجملة أعلاه بالفعل مفصل للغاية ، لذلك ليست هناك حاجة للحديث عنها. بعد ذلك ، دعونا نلقي نظرة على كيفية استخدام هذه الأساليب والسمات للتحقق من شرعية البيانات في أمثلة محددة. دعونا نعطي مثالا. على سبيل المثال ، نريد التحقق من إدخال البريد الإلكتروني من قبل المستخدم. لذا ، ما نوع البيانات التي تعتبر بريدًا إلكترونيًا قانونيًا؟ يمكنني إدخال هذا: [email protected] ، بالطبع سأدخل هذا أيضًا:
1. يجب أن يحتوي على رمز واحد وفقط فقط @
2. يجب أن يحتوي على واحد على الأقل على الأقل ثلاثة رموز.
3. يجب ألا يكون الشخصية الأولى @ أو.
4. @ .or. @ غير مسموح به
5. يجب ألا تكون النهاية شخصية @ أو.
بناءً على المبادئ المذكورة أعلاه وبناء الجملة في الجدول أعلاه ، يمكننا بسهولة الحصول على القالب المطلوب على النحو التالي: (W) [@] {1} (W) [.] {1،3} (W)
بعد ذلك ، دعنا نحلل هذا القالب بعناية. أولاً ، يعني W أن حرف البدء للبريد الإلكتروني يمكن أن يكون مجرد حرف يحتوي على حرف ترفيسي ، بحيث يتم استيفاء الحالة الثالثة ؛ [@] {1} يعني أنه يجب مطابقة الحرف في البريد الإلكتروني ولا يمكن مطابقتها إلا مرة واحدة ، ويتم الوفاء بالشرط ؛ نفس [.] {1،3} يعني أن 1 على الأقل يتطابق على 3 أحرف في البريد الإلكتروني. ، إرضاء الحالة الثانية ؛ يشير آخر (ث) من القالب إلى أن حرف النهاية يمكن أن يكون فقط حرفًا يحتوي على حرف واحد ، مما يرضي الحالة الخامسة ؛ (ث) في منتصف القالب يلتقي بالحالة الرابعة.
بعد ذلك ، ندعو الوظيفة checkexp ((W) [@] {1} (W) [.] {1} (W) ، السلسلة المراد فحصها). إذا تم إرجاع TRUE ، فهذا يعني أن البيانات قانونية ، وإلا فستكون غير صحيحة. ماذا عن ذلك ، الأمر بسيط. يمكننا أيضًا كتابة قالب للتحقق من رقم المعرف: ([0-9]) {15} ؛ قالب للتحقق من عنوان URL: ^http: // {1} ((w) [.]) {1،3} ، إلخ. ؛ يمكننا أن نرى أن هذه القوالب توفر لنا وحدات جيدة إعادة الاستخدام. باستخدام قوالب مختلفة مقدمة من قبل أنفسنا أو الآخرين ، يمكننا بسهولة التحقق من شرعية البيانات. أعتقد أنك ستكتب بالتأكيد قالبًا عامًا للغاية.
وبهذه الطريقة ، يمكننا التحقق من شرعية البيانات المختلفة من خلال تخصيص قوالب مختلفة. لذلك ، فإن السمة الأكثر أهمية في كائن التعبير العادي هي سمة النمط. فقط من خلال إتقان هذه السمة حقًا ، يمكنك استخدام كائن التعبير العادي بحرية لخدمة التحقق من البيانات لدينا.
استخدم نفس القواعد
| ما يلي هو المحتوى المقتبس: String str = <img src =/upimg/allimg/081024/0851350.jpg> <img src =/upimg/allimg/081024/0851351.jpg> <img src =/upimg/allimg/081024/0851352.jpg> regex reg = new regex (<imgs src = (['|]؟) (s .w) (1)) ؛ MatchCollection MC = Reg.Matches (الإدخال) ؛ foreach (مباراة M في MC) { tb_result.appendtext (string.format ({0} هو matchrn ، m.groups [0])) ؛ لـ (int i = 0 ؛ i <m.groups.count ؛ i) { // يجب أن يكون عنوان الصورة M.Groups [2]. القيمة review.write (string.format (group [{0}] = {1} rn ، i ، m.groups [i] .value)) ؛ } } |
// كم عدد المباريات الموجودة
Response.write (mc.count.toString ()) ؛
مشاركة: كيفية استخدام برنامج ASP لقراءة تصنيفات Alexa World للموقع عندما يتم تحديث تصنيف Alexa ، أحتاج إلى فرز تصنيفات جميع مواقع الويب المماثلة ذات الصلة ومشاهدة تحديثات التصنيف لهذه المواقع المتنافسة. لقد فعلت المزيد ، وأشعر بالانزعاج. على الرغم من أن لدي أكثر من 30 موقعًا فقط ، إلا أنني أشعر بالتعب قليلاً بعد مشاهدتها واحدة تلو الأخرى. لذلك ، أريد