تالار گفتمان nCIS.ir

نسخه‌ی کامل: ایجاد RegExp فارسی
شما در حال مشاهده نسخه آرشیو هستید. برای مشاهده نسخه کامل کلیک کنید.

abolfazlab

سلام

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

 /*!
 * 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('([!,%,&,@,#,$,^,*,?,_,~])');
علاوه بر کلمات انگلیسی حروف فارس هم چک شود 
کد را باید چگونه تغییر بدهم
باتشکر
خود حروف فارسی رو هم میتونین داخل آکولادها بنویسین. همچنین میتونین از محدوده‌ی کد یونیکدشون استفاده کنین:
http://jrgraphix.net/research/unicode_blocks.php