需要做一些模式匹配与javascript
Needing to do some pattern matching with javascript
本文关键字:模式匹配 javascript 更新时间:2023-09-26
有一个用户输入的长字符串。使用javascript,我想得到第一句话的文本,如果它以问号结束。有什么简单的方法吗?
例如:var myText1 = "What is your name? My name is Michelle."
我需要返回:"What is your name"
var myText2 = "this is a test. this is a test."
我需要返回:"n/a"
正则表达式:
var res = str.match(/^([^.]+)'?/);
var output = (res == null) ? 'n/a' : res[1];
我很困惑,这将是如何实际,但这应该工作。
var text = "this is a question? this is some text.";
var split1 = text.split(/[.?]+/); // splits the text at "." and "?"
var split2 = text.split(/[?]+/); // splits the text at "?"
// if the first element in both arrays is the same, the first sentence is a question.
var result = (split1[0] == split2[0]) ? split1[0] : "n/a";
根据美式英语语法规则,句子以.
, ?
或!
结尾,但如果句子以引号结尾,则"
将跟随(他对我说,"How are you doing?")。这算问题吗?这个句子本身是一个引问句的陈述句,所以我假设答案是否定的。这使它更容易,因为我们只需要考虑?
后面没有"
。
考虑到以上,我的解决方案是:
function startIsQuestion( str ) {
var m = str.match(/^[^.!]+[?][^"]/);
if (!m ||
m[0].indexOf('.') >= 0 ||
m[0].indexOf('!') >= 0 ||
m[0].indexOf('?"') >= 0) return "n/a";
return m[0];
}
我不认为它完全健壮,但我不确定你的全部需求,它应该给你一个好的开始。
<<p> 看到演示/strong>相关文章:
- Regex模式匹配,从Javascript中的字符串中提取时间,结果出乎意料
- 模仿负查找以匹配JavaScript正则表达式中没有紧跟特定字符的模式
- Javascript重复模式匹配,然后输出到文本区域
- JavaScript测验的模式匹配
- JavaScript REGEX 模式匹配
- 忽略模糊匹配并使用 JavaScript 添加精确的单词模式匹配
- 提取一组与 Javascript 中的模式匹配的连续单词
- JavaScript 正则表达式查找与开始和结束模式匹配的所有子字符串
- 使用javascript或jquery修改href-或-URL重定向/重写和模式匹配
- 在Javascript中测试字符串模式匹配
- javascript正则表达式模式匹配单词,具有自定义单词边界
- 如果javascript或jQuery中的模式匹配,如何附加反斜杠
- 匹配字符串中的一个模式但排除另一个模式的Javascript正则表达式
- Javascript查找与模式匹配的所有字符串
- 当模式匹配字符串时,Javascript/jQuery可以更快地替代$.inArray
- Javascript字符串模式匹配给出空结果
- 需要做一些模式匹配与javascript
- 为什么Javascript中的for循环比模式匹配更糟糕
- Javascript match:只返回子模式匹配的内容
- JavaScript:如何计算一个反向RegExp模式来剥离与源模式匹配的字符