2012-01-02 105 views
2

我从文本字段获取值。如果输入的输入末尾没有出现特殊字符(例如%),我想显示警告消息。JavaScript检查字符串末尾的特殊字符

Usecases:

  1. AB%C - 显示警报
  2. %ABC-显示警报
  3. 一%BC-显示警报
  4. ABC% - 确定

正则表达式我到目前为止是这样的。

var txtVal = document.getElementById("sometextField").value; 

if (!/^[%]/.test(txtVal)) 
    alert("% only allowed at the end."); 

请帮忙。 感谢

+0

那么,它不工作? – 2012-01-02 01:44:48

+0

如果字符串中不存在'%',该怎么办? – 2012-01-02 01:45:22

+0

@Sergio Tulentsev。该字符串不会有它。它是包含%的用户输入值,意味着用户将输入它为abcde%f等 – Nomad 2012-01-02 01:47:33

回答

3

无需使用正则表达式。的indexOf会发现一个字符的第一次出现,所以只检查它的结尾:

if(str.indexOf('%') != str.length -1) { 
    // alert something 
} 
+0

感谢您的回答,它似乎在工作。 http://jsfiddle.net/pQzvd/ – Nomad 2012-01-02 02:07:10

+0

“它似乎在工作”。你明白它为什么有效吗? – 2012-01-03 01:31:45

+0

是的,我喜欢。谢谢。 – Nomad 2012-01-04 22:02:12

2
if (/%(?!$)/.test(txtVal)) 
    alert("% only allowed at the end."); 

或使不使用一个RegExp它更易读:

var pct = txtVal.indexOf('%'); 
if (0 <= pct && pct < txtVal.length - 1) { 
    alert("% only allowed at the end."); 
} 
+0

感谢您的回答和帮助,正则表达式似乎是工作,但不是第二个。 http://jsfiddle.net/ZHpDN/2/ – Nomad 2012-01-02 01:57:56

+0

@Nomad,那真是愚蠢。修正了第二个。 – 2012-01-02 15:58:24

+0

感谢您的更新,非常感谢您的帮助和时间。 – Nomad 2012-01-04 22:02:37

2

你不需要正则表达式来检查这个在所有。

var foo = "abcd%ef"; 
var lastchar = foo[foo.length - 1]; 
if (lastchar != '%') { 
    alert("hello"); 
} 

http://jsfiddle.net/cwu4S/

+0

感谢您的回答,但您的回答似乎不起作用。 http://jsfiddle.net/4tzmR/1/ – Nomad 2012-01-02 02:01:28

+0

我在这个例子中有两个语法错误。有一个额外的右括号和缺少的分号。 http://jsfiddle.net/4tzmR/3/ – mrtsherman 2012-01-02 02:07:08

1

将这项工作?

if (txtVal[txtVal.length-1]=='%') { 
    alert("It's there"); 
} 
else { 
    alert("It's not there"); 
} 
+0

感谢您的回答,它似乎工作。 – Nomad 2012-01-02 02:08:31

相关问题