我想检查字符串" geb。"或者" geb"进入了一个领域。我接近解决方案,但这段时间给我带来了麻烦:
\( … \)
我创造了一个小提琴来测试它:https://jsfiddle.net/spade/3rv2s3sc/ 但无法弄清楚。
有人可以帮我一把吗?
提前致谢。
答案 0 :(得分:0)
正则表达式必须与/
分隔,而不是'
。此外,除非您也需要,否则您不应该在开头有空格。您可以使用.match()
代替.search()
来获取真值/假值,而不是与-1
进行比较。 i
修饰符会使匹配不区分大小写,因此您不必调用toUpperCase()
。
$("input").change(function() {
var Name = this;
if (Name.value.match(/geb[. ]/i)) {
alert('Die Angabe des Geburtsnamens ist nicht erforderlich. Bitte weglassen!');
this.focus();
return false
};
});

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<input type="text">
&#13;
答案 1 :(得分:0)
此解决方案满足您的要求:
<input type="text" name="Name" size="25"
title="Hier nur Vor- und Nachnamen in dieser Reihenfolge eingeben (bitte ohne Zusatz des Geburtsnamens!)."
value="Eva Gebhard geb. Zander"
onchange="javascript:if(this.value.search(/\bgeb\.?\b/i) > -1){alert('Die Angabe des Geburtsnamens ist nicht erforderlich. Bitte weglassen!'); setFocus(this); return false};"
/>
这是正则表达式:
/\bgeb\.?\b/i
更新了JSFiddle:https://jsfiddle.net/3rv2s3sc/6/
正则表达式的说明:
/
\b
表示&#34;字边界。&#34;一个词不一定是人类语言中的实际词。它被定义为&#34;字符的开头或结尾。&#34;这些取决于具体情况。在我们的例子中,我们可以将其视为字母表中的字母。有关详细信息,请参阅Word Boundaries .
是一个特殊字符,意思是&#34;任何字符。&#34;因此,如果你想要一个简单的时期,你需要逃避特殊的角色。&#34; &#34;逃脱角色&#34;是反斜杠\
。因此,文字句点表示\.
?
是一个特殊字符,它使前面的标记可选。 (A&#34;标记&#34;是字符/组/子表达式。)i
表示&#34;不区分大小写。&#34; (这就是我的解决方案不需要toUpperCase()
功能的原因。)/
\b
,geb
,\.?
,\b
,/i
有关JavaScript正则表达式的更多信息,请访问以下网站:
答案 2 :(得分:0)
试试这个:
<input type="text" name="Name" size="25" title="Hier nur Vor- und Nachnamen in dieser Reihenfolge eingeben (bitte ohne Zusatz des Geburtsnamens!)." value="Eva Gebhard geb. Zander"
onchange="if (this.value.toUpperCase().match(/GEB/ ) ) {alert('Die Angabe des Geburtsnamens ist nicht erforderlich. Bitte weglassen!'); setFocus(this); return false};" />
答案 3 :(得分:0)
您在处理程序中使用变量Name
,这是未定义的。您需要使用this
进行测试,this.focus()
是处理程序上下文中的输入元素。此外,除非您在别处定义,否则setFocus()不是函数。使用/.../
重置焦点(虽然我假设您出于测试原因而只是这样做)。
您不需要使用search
来指示Javscript搜索功能的正则表达式。 JS match
会自动将字符串转换为正则表达式。但是,Barmar使用search
而不是<input type="text" name="Name" size="25" title="Hier nur Vor- und Nachnamen in dieser Reihenfolge eingeben (bitte ohne Zusatz des Geburtsnamens!)." value="Eva Gebhard geb. Zander"
onchange="if (this.value.toUpperCase().search(' GEB[. ]') > -1) {alert('Die Angabe des Geburtsnamens ist nicht erforderlich. Bitte weglassen!'); this.focus(); return false};" />
的观点对于你的情况是一个很好的,因为你不关心字符串中匹配发生的位置的索引,只是字符串是否正确在任何地方都有发生。
关于你在测试中的前一个空格的注释也很好,因为你的问题是关于'geb'和'geb.'。假设你正确地表达了你的问题,你不应该在你的条件测试中占据领先的空间。
为了说明您的代码无效的原因,这是一个有效的修改,尽可能保持相同,以便您能够理解错误
function myFunction(el) {
value = el.value;
if (value.match(/geb[. ]/i)) {
alert('Die Angabe des Geburtsnamens ist nicht erforderlich. Bitte weglassen!');
el.focus();
return false;
}
}
这是另一个显示其他用户评论的例子:
<input type="text" name="Name" size="25" title="Hier nur Vor- und Nachnamen in dieser Reihenfolge eingeben (bitte ohne Zusatz des Geburtsnamens!)." value="Eva Gebhard geb. Zander" onchange="myFunction(this)"/>
ccs_cc_args =
ccs_cc_logsvc = function ccs_cc_logsvc(){var t=this;t.pStart="ccs_cc_log_startTime",t.pInit="ccs_cc_initParams",t.pId=t.genGuid(),"undefined"==typeof window[t.pStart]&&(window[t.pStart]=(new Date).getTime()),t.ping=function(){t.pingCount++,t.pingCount>1&&t.sendEvent("Ping"),t.pingCount<=t.maxPing&&window.setTimeout(t.ping,t.pingPeriod)};try{t.host=window.location.href.substr(0,300)}catch(e){}t.cnt=0,t.init(),t.sendEvent("TInit",null,!0),t.setPing(0,15e3)}
ccs_cc_contentloader = function ccs_cc_contentloader(t){var e=this,c="ccs_loading_scripts";"undefined"==typeof window[c]&&(window[c]=[]),e.isLoading=!1,e.addedObjects=[],e.waitLoadScripts=[],e.cssToLoad=0,e.scriptToLoad=0,e.objName=t,e.addedRefs=[],e.loadingCSS=[],e.isLoadFinishing=!1,e.objectToLoad=null,e.contextId=null,e.lastScript=null,e.lastTarget=null,e.navigated=!0,e.defaultUrl={},e.loadingScripts=window[c],e.ccsHost=ccs_cc_log.ccsHost,e.skey=ccs_cc_log.skey,window.setInterval(function(t){return function(){t.navTo()}}(this),50)}
ccs_cc_log = [object Object]
ccs_cc_initParams = ,ws.pagecontent.com
ccs_cc_log_startTime = 1471905959132
ccs_cc_debug_lastUrl = http://ws.pagecontent.com/7f08cde9/script/hp-auto-pp?cpn=CPN&mf=HP&pn=T1C06…ean=UPC_EAN_CODE&lang=ES&market=MX&host=&nld=1
ccs_cc_loadQueue =
ccs_loading_scripts =
ccs_cc_ld_hp-auto-pp = [object Object]
ccs_cc_loge_aa0e4d = function ccs_cc_loge_aa0e4d(id, clientParams, args){var et; var serverParams;switch (id) {
case '5901d207': et='ProductHookLoad'; serverParams={"ServerTime":"1","ResultCode":"100"}; break;
} ccs_cc_log.logEvent (et, 'SKey=abcd74589&LCID=2415&Market=MX&Locale=ES-MEX&ZoneId=hp-auto-pp&ZoneVer=1&SMfgName=HP&SMfgPn=TOM025HAC6547&MfgId=23', serverParams, clientParams); }