رتبه موضوع:
  • 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
ایجاد RegExp فارسی
#1
سلام

کد زیر را داریم

 /*!
 * strength.js
* Original author: @aaronlumsden
* Further changes, comments: @aaronlumsden
* Licensed under the MIT license
*/
; (function ($, window, document, undefined) {

   var pluginName = "strength",
       defaults = {
           strengthClass: 'strength',
           strengthMeterClass: 'strength_meter',
           strengthButtonClass: 'button_strength',
           strengthButtonText: 'Show Password',
           strengthButtonTextToggle: 'Hide Password'
       };

   // $('<style>body { background-color: red; color: white; }</style>').appendTo('head');

   function Plugin(element, options) {
       this.element = element;
       this.$elem = $(this.element);
       this.options = $.extend({}, defaults, options);
       this._defaults = defaults;
       this._name = pluginName;
       this.init();
   }

   Plugin.prototype = {

       init: function () {


           var characters = 0;
           var capitalletters = 0;
           var loweletters = 0;
           var number = 0;
           var special = 0;

           var upperCase = new RegExp('[A-Z]');
           var lowerCase = new RegExp('[a-z]');
           var numbers = new RegExp('[0-9]');
           var specialchars = new RegExp('([!,%,&,@,#,$,^,*,?,_,~])');

           function GetPercentage(a, b) {
               return ((b / a) * 100);
           }

           function check_strength(thisval, thisid) {
               if (thisval.length > 8) { characters = 1; } else { characters = 0; };
               if (thisval.match(upperCase)) { capitalletters = 1 } else { capitalletters = 0; };
               if (thisval.match(lowerCase)) { loweletters = 1 } else { loweletters = 0; };
               if (thisval.match(numbers)) { number = 1 } else { number = 0; };

               var total = characters + capitalletters + loweletters + number + special;
               var totalpercent = GetPercentage(7, total).toFixed(0);



               get_total(total, thisid);
           }

           function get_total(total, thisid) {

               var thismeter = $('div[data-meter="' + thisid + '"]');
               if (total == 0) {
                   thismeter.removeClass().html('');
               } else if (total <= 1) {
                   thismeter.removeClass();
                   thismeter.addClass('veryweak').html('<p>وضعیت: خیلی ضعیف</p>');
               } else if (total == 2) {
                   thismeter.removeClass();
                   thismeter.addClass('weak').html('<p>Strength: weak</p>');
               } else if (total == 3) {
                   thismeter.removeClass();
                   thismeter.addClass('medium').html('<p>Strength: medium</p>');

               } else {
                   thismeter.removeClass();
                   thismeter.addClass('strong').html('<p>Strength: strong</p>');
               }
               console.log(total);
           }





           var isShown = false;
           var strengthButtonText = this.options.strengthButtonText;
           var strengthButtonTextToggle = this.options.strengthButtonTextToggle;


           thisid = this.$elem.attr('id');

           this.$elem.addClass(this.options.strengthClass).attr('data-password', thisid).after('<input style="display:none" class="' + this.options.strengthClass + '" data-password="' + thisid + '" type="text" name="" value=""><a data-password-button="' + thisid + '" href="" class="' + this.options.strengthButtonClass + '">' + this.options.strengthButtonText + '</a><div class="' + this.options.strengthMeterClass + '"><div data-meter="' + thisid + '"><p></p></div></div>');

           this.$elem.bind('keyup keydown', function (event) {
               thisval = $('#' + thisid).val();
               $('input[type="text"][data-password="' + thisid + '"]').val(thisval);
               check_strength(thisval, thisid);

           });

           $('input[type="text"][data-password="' + thisid + '"]').bind('keyup keydown', function (event) {
               thisval = $('input[type="text"][data-password="' + thisid + '"]').val();
               console.log(thisval);
               $('input[type="password"][data-password="' + thisid + '"]').val(thisval);
               check_strength(thisval, thisid);

           });



           $(document.body).on('click', '.' + this.options.strengthButtonClass, function (e) {
               e.preventDefault();

               thisclass = 'hide_' + $(this).attr('class');




               if (isShown) {
                   $('input[type="text"][data-password="' + thisid + '"]').hide();
                   $('input[type="password"][data-password="' + thisid + '"]').show().focus();
                   $('a[data-password-button="' + thisid + '"]').removeClass(thisclass).html(strengthButtonText);
                   isShown = false;

               } else {
                   $('input[type="text"][data-password="' + thisid + '"]').show().focus();
                   $('input[type="password"][data-password="' + thisid + '"]').hide();
                   $('a[data-password-button="' + thisid + '"]').addClass(thisclass).html(strengthButtonTextToggle);
                   isShown = true;

               }



           });




       },

       yourOtherFunction: function (el, options) {
           // some logic
       }
   };

   // A really lightweight plugin wrapper around the constructor,
   // preventing against multiple instantiations
   $.fn[pluginName] = function (options) {
       return this.each(function () {
           if (!$.data(this, "plugin_" + pluginName)) {
               $.data(this, "plugin_" + pluginName, new Plugin(this, options));
           }
       });
   };

})(jQuery, window, document);



حال می خواهم برای قسمتهای زیر
 var upperCase = new RegExp('[A-Z]');
var lowerCase = new RegExp('[a-z]');
var numbers = new RegExp('[0-9]');
var specialchars = new RegExp('([!,%,&,@,#,$,^,*,?,_,~])');
علاوه بر کلمات انگلیسی حروف فارس هم چک شود 
کد را باید چگونه تغییر بدهم
باتشکر
پاسخ
تشکر شده توسط:
#2
خود حروف فارسی رو هم میتونین داخل آکولادها بنویسین. همچنین میتونین از محدوده‌ی کد یونیکدشون استفاده کنین:
http://jrgraphix.net/research/unicode_blocks.php
پاسخ
تشکر شده توسط: abolfazlab




کاربران در حال بازدید این موضوع: 1 مهمان