【问题标题】:Need Javascript Regex to prevent user to enter only characters and only one apostrophe allowed需要 Javascript 正则表达式来防止用户只输入字符并且只允许一个撇号
【发布时间】:2018-11-26 06:54:25
【问题描述】:

我需要 Javascript 正则表达式,以防止用户输入任何内容,并且只允许输入字符和一个撇号。

允许 - Dsouza 的,Test 的

不允许: test''s , test'''1s

我使用下面的正则表达式来防止用户输入数字和特殊字符。我需要在字符之间只允许一个撇号。

/[^A-Za-z]/g

我的要求是使用如下 sn-p 的正则表达式。

function fromUser(model) {
            var preset = {

                'only-letters': /[^A-Za-z]/g

            };
            var regex = preset[attr.customInputValidator] || attr.customInputValidator;
            var transformedInput = model.replace(regex, '');


            return transformedInput; 
}

【问题讨论】:

  • A-A?这看起来也不对。此外,您似乎试图匹配违规而不是匹配有效条目。
  • @trincot 已编辑。
  • 是的,请参阅@trincot 的编辑:第一步是将这种对坏字符的否定检查更改为对仅包含好字符的字符串的肯定检查。
  • 需要在替换功能中执行此活动。因此,这些字符之间只允许使用字符和一个撇号。
  • 允许“O'Reighly's”吗?连字符怎么样:“John-Martin”,或空格“John Frederick”,或重音符号“Sébastien”、“Müller”、“Åke”、“Løvik”……等等……等等。

标签: javascript jquery regex


【解决方案1】:

这是一个示例,希望对您有所帮助。使用模式:/^(?!.*'.*'.*)[a-zA-Z']+$/

var strings = [
     "Dsouza",
     "Dsouza's",
      "Dsouza's",
       "Dsouza''s",
       "test''s ",
       "test'''1s"
] , html = '';

for ( var i = 0; i< strings.length ; i++ ){  
    html += ''+[ 
            'sring : <b>'+strings[i] + '</b>'     
           , 'using regx :<b>' + ( /^(?!.*'.*'.*)[a-zA-Z']+$/.test(strings[i]) ) + '</b>'
    ].join('<br />') + '<br /><br />';
}

document.getElementById('result').innerHTML = html ;
&lt;div id="result"&gt;&lt;/div&gt;

【讨论】:

  • Dsouza's Dsouza''s 是什么?
【解决方案2】:

为了只允许字母和撇号出现一次,甚至可以是可选的,您可以使用这个正则表达式,

^[a-zA-Z]+(?:'[a-zA-Z]+)?$

Demo

这匹配纯字母字符,或匹配字母表中仅包含一个撇号的字母表。

让我知道这是否符合您的要求,否则我可以根据您的有效/无效数据集的进一步示例进一步修改。

【讨论】:

    【解决方案3】:

    要只允许字母和一个特殊字符 ('),请使用此 RegEx,有两种变体:

    1. 允许这种模式asd'sad

      /^[A-Z]+(?:'?[A-Z]+)?$/i.test("asdgrr'ssde"); // true
      /^[A-Z]+(?:'?[A-Z]+)?$/i.test("asdgrr's");    // true
      /^[A-Z]+(?:'?[A-Z]+)?$/i.test("AGTrr'ssde");  // true
      /^[A-Z]+(?:'?[A-Z]+)?$/i.test("asdssde");     // true
      /^[A-Z]+(?:'?[A-Z]+)?$/i.test("arr'ss'de");   // false
      
    2. 在 ' 之后只允许一个字母,即asd's:

      /^[A-Z]+(?:'?[A-Z])?$/i.test("asdgrr'ssde"); // false
      /^[A-Z]+(?:'?[A-Z])?$/i.test("asdgrr's");    // true
      /^[A-Z]+(?:'?[A-Z])?$/i.test("asdgrr'S");    // true
      /^[A-Z]+(?:'?[A-Z])?$/i.test("ATRr'g");      // true
      /^[A-Z]+(?:'?[A-Z])?$/i.test("AGTrr'ssde");  // false
      /^[A-Z]+(?:'?[A-Z])?$/i.test("asdssde");     // true
      /^[A-Z]+(?:'?[A-Z])?$/i.test("arr'ss'de");   // false 
      

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-03
      相关资源
      最近更新 更多