我有一个正则表达式来验证英尺和英寸输入脚输入字段。
正则表达式
^([1-2]?[0-9]{1,3})\'([0-9]|[0-1]{2})\"$
HTML
<label for="ft">Feet:</label>
<input type="text" name="ft" id="ft" value="#form.ft#">
的jQuery
<script>
$.mask.definitions['h'] = '^([1-2]?[0-9]{1,3})\'([0-9]|[0-1]{2})\"$';
$('#ft').mask('h',{placeholder:'0\'0"'});
</script>
或
$('#ft').mask('???0\'0?0"',{placeholder:'0\'0"'});
如果可选字符在开头怎么办?你有两个选项吗?
我想做什么:
当用户到达该文本框中的页面时,它已经读取0'00“所以当他们开始填写它时,它将开始填写它,保持”'“和”“”已经在他们的框中。在脚侧上升至2000英寸侧仅允许最多11号。
我无法插入像0'00这样的面具或者让符号留在那里以及从左到右开始输入的内容。
非常感谢任何帮助!
答案 0 :(得分:0)
您可以使用:
^([1-2]?[0-9]{1,3})?\'(0?[0-9]|[0-1]{2})?\"$
验证,但使部分可选。
至于输入保持&#39;和&#34;,将它们放入捕获组:
^([1-2]?[0-9]{1,3})?(\')(0?[0-9]|[0-1]{2})?(\")$
然后你可以分析组$ 1,$ 2,$ 3和$ 4,其中$ 1和$ 3是值,$ 2和$ 4是&#39;和&#34;尊敬。在用户输入时,可能会解析输入,使用此正则表达式将其拆分,并在restoring the caret position时替换输入。或者,您可以等待输入失去焦点,并用生成的解析值替换内容。
示例:
var r = "0'00\"".match(/^([1-2]?[0-9]{1,3})?(\')(0?[0-9]|[0-1]{2})?(\")$/)
// Result: r == ["0'00"", "0", "'", "00", """]
现在,您可以使用连接值替换输入内容:
r.splice(1).join("");